Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-12728:Ungültiger Bereich im regulären Ausdruck

Regexp verwendet \ nicht um - zu schützen in einem Klammernausdruck . Sie müssen nur - eingeben als erstes Zeichen direkt nach der öffnenden Klammer:

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

=> ORA-12728: invalid range in regular expression

Wenn Sie neugierig sind, wenn Sie auf [\-,:] stoßen Oracle versteht:"jedes Zeichen im Bereich von \ zu , oder das Zeichen : " . Der Grund, warum dies eine Ausnahme auslöst, ist \ scheint nach zu sein , nach ihrem ASCII-Wert. Und Oracle akzeptiert keinen Bereich mit einem Startwert nach dem Endwert.

Andererseits:

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

Funktioniert wie erwartet.

Nebenbei bemerkt, [-,:]{0,1} bedeutet "null oder ein Vorkommen von - oder , oder : " könnte [-,:]? geschrieben werden .