Điều này là do Oracle chỉ hỗ trợ tiêu chuẩn biểu thức chính quy POSIX, thay vì cú pháp Perl mà bạn sử dụng trong ví dụ đầu tiên của mình.
Tài liệu Oracle: http://docs.oracle. com / cd / B19306_01 / appdev.102 / b14251 / adfns_regexp.htm # CHDJGBGG POSIX Regex Standard: http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
Chỉnh sửa:Như Alex Poole chỉ ra rằng Oracle thực sự hỗ trợ cú pháp Perl regex kể từ Oracle 10gR2. Thử ví dụ của bạn trên bản cài đặt 11gR2 cục bộ của tôi cho thấy rằng cú pháp của bạn sai, cách sau hoạt động tốt:
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');