これは、Oracleが最初の例で使用するPerl構文ではなく、POSIX正規表現標準のみをサポートしているためです。
Oracleドキュメント: http://docs.oracle。 com / cd / B19306_01 / appdev.102 / b14251 / adfns_regexp.htm#CHDJGBGG POSIX正規表現標準: http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
編集: AlexPoole として Oracleは、Oracle 10gR2以降、実際にはPerl正規表現構文をサポートしていると指摘しています。ローカルの11gR2インストールで例を試してみると、構文が間違っていることがわかります。以下は正常に機能します。
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');