Regexp nepoužívejte \
k ochraně -
ve výrazu v závorce . Stačí zadat -
jako první znak, hned za úvodní závorkou:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Pokud jste zvědaví, při setkání s [\-,:]
Oracle rozumí:„jakýkoli znak v rozsahu od \
na ,
nebo znak :
" . Důvod, proč to vyvolává výjimku, je \
se zdá být po ,
podle jejich hodnoty ASCII. A Oracle nepřijímá rozsah mající počáteční hodnotu za koncovou.
Na druhou stranu:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Funguje podle očekávání.
Jako okrajová poznámka,
[-,:]{0,1}
což znamená "nula nebo jeden výskyt -
nebo ,
nebo :
" mohl být zapsán [-,:]?
.