En effet, Oracle ne prend en charge que la norme d'expressions régulières POSIX, plutôt que la syntaxe Perl que vous utilisez dans votre premier exemple.
Documents Oracle :http://docs.oracle. com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#CHDJGBGG Norme d'expression régulière POSIX :http://pubs.opengroup.org/onlinepubs/007908799 /xbd/re.html
Modifier :En tant que Alex Poole souligne qu'Oracle prend en charge la syntaxe Perl regex depuis Oracle 10gR2. Essayer votre exemple sur mon installation locale 11gR2 suggère que votre syntaxe est incorrecte, ce qui suit fonctionne bien :
SELECT 1 FROM dual WHERE regexp_like('040', '^\d{3}$');