Ini karena Oracle hanya mendukung standar ekspresi reguler POSIX, bukan sintaks Perl yang Anda gunakan dalam contoh pertama Anda.
Oracle Documents:http://docs.Oracle. com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#CHDJGBGG Standar Regex POSIX:http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
Sunting:Sebagai Alex Poole menunjukkan Oracle sebenarnya mendukung sintaks regex Perl sejak Oracle 10gR2. Mencoba contoh Anda pada instalasi 11gR2 lokal saya menunjukkan bahwa sintaks Anda salah, berikut ini berfungsi dengan baik:
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');