sql >> Database teknologi >  >> RDS >> Oracle

ORA-12728:ugyldigt område i regulære udtryk

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 [-,:]? .


  1. Hvad kræver dette JavaScript?

  2. Forældede funktioner til at tage ud af din værktøjskasse – Del 3

  3. Hvad er nyt i MariaDB Cluster 10.4

  4. Oracle (Gamle?) Joins - Et værktøj/script til konvertering?