Questo perché Oracle supporta solo lo standard delle espressioni regolari POSIX, piuttosto che la sintassi Perl che usi nel tuo primo esempio.
Documenti 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
Modifica:come Alex Poole sottolinea Oracle in realtà supporta la sintassi regex Perl da Oracle 10gR2. Provare il tuo esempio sulla mia installazione 11gR2 locale suggerisce che la tua sintassi è sbagliata, quanto segue funziona bene:
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');