Dit komt omdat Oracle alleen de POSIX-standaard voor reguliere expressies ondersteunt, in plaats van de Perl-syntaxis die u in uw eerste voorbeeld gebruikt.
Oracle Docs:http://docs.oracle. com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#CHDJGBGG POSIX Regex-standaard:http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
Bewerken:als Alex Poole wijst erop dat Oracle de Perl regex-syntaxis daadwerkelijk ondersteunt sinds Oracle 10gR2. Als ik je voorbeeld probeer op mijn lokale 11gR2-installatie, suggereert dit dat je syntaxis verkeerd is, het volgende werkt prima:
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');