Regexp jangan gunakan \
untuk melindungi -
dalam ekspresi tanda kurung . Anda hanya perlu memasukkan -
sebagai karakter pertama, tepat setelah tanda kurung buka:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Jika Anda penasaran, ketika menemukan [\-,:]
Oracle mengerti:"karakter apapun dalam rentang dari \
ke ,
atau karakter :
" . Alasan mengapa ini menimbulkan pengecualian adalah \
tampaknya setelah ,
sesuai dengan nilai ASCII mereka. Dan Oracle tidak menerima rentang memiliki nilai awal setelah nilai akhir.
Sebaliknya:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Bekerja seperti yang diharapkan.
Sebagai catatan tambahan,
[-,:]{0,1}
artinya "nol atau satu kemunculan -
atau ,
atau :
" bisa ditulis [-,:]?
.