Regexp brug ikke \
for at beskytte -
i et parentesudtryk . Du skal kun indtaste -
som det første tegn lige efter den indledende parentes:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Hvis du er nysgerrig, når du støder på [\-,:]
Oracle forstår:"ethvert tegn i området fra \
til ,
eller tegnet :
" . Grunden til at dette rejser en undtagelse er \
ser ud til at være efter ,
i henhold til deres ASCII-værdi. Og Oracle accepterer ikke rækkevidde have en startværdi efter den afsluttende.
På den anden side:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Virker som forventet.
Som en sidebemærkning,
[-,:]{0,1}
betyder "nul eller én forekomst af -
eller ,
eller :
" kunne skrives [-,:]?
.