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 .