sql >> Database >  >> RDS >> Oracle

ORA-12728:ongeldig bereik in reguliere expressie

Regexp gebruikt geen \ om - te beschermen tussen een uitdrukking tussen haakjes . Je hoeft alleen - . in te voeren als het eerste teken, net na de openingshaak:

IF REGEXP_LIKE('--,,::', '[\-,:]*')
...

=> ORA-12728: invalid range in regular expression

Als je nieuwsgierig bent, bij het tegenkomen van [\-,:] Oracle begrijpt:"elk teken in het bereik van \ naar , of het teken : " . De reden waarom dit een uitzondering oplevert is \ lijkt na . te zijn , volgens hun ASCII-waarde. En Oracle accepteert geen bereik met een startwaarde na de eindwaarde.

Aan de andere kant:

 IF REGEXP_LIKE('--,,::', '[-,:]*')

Werkt zoals verwacht.

Als een kanttekening, [-,:]{0,1} wat betekent "nul of één keer - of , of : " kan worden geschreven [-,:]? .


  1. MySQL omzeilen Kan tabelfout niet heropenen

  2. Hoe de FROM_BASE64()-functie werkt in MySQL

  3. SQL Server-trigger:inzicht en alternatieven

  4. Veelvoorkomende fouten bij het migreren van PostgreSQL-databases van on-premises naar AWS RDS