Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-12728 :plage non valide dans l'expression régulière

Regexp n'utilise pas \ pour protéger - dans une expression entre parenthèses . Il suffit de mettre - comme premier caractère, juste après la parenthèse ouvrante :

IF REGEXP_LIKE('--,,::', '[\-,:]*')
...

=> ORA-12728: invalid range in regular expression

Si vous êtes curieux, lorsque vous rencontrez [\-,:] Oracle comprend :"n'importe quel caractère dans la plage de \ à , ou le caractère : " . La raison pour laquelle cela lève une exception est \ semble être après , selon leur valeur ASCII. Et Oracle n'accepte pas la plage ayant une valeur de départ après celle de fin.

D'autre part :

 IF REGEXP_LIKE('--,,::', '[-,:]*')

Fonctionne comme prévu.

En passant, [-,:]{0,1} signifiant "zéro ou une occurrence de - ou , ou : " pourrait s'écrire [-,:]? .