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 .