sql >> Databasteknik >  >> RDS >> Oracle

ORA-12728:ogiltigt intervall i reguljärt uttryck

Regexp använder inte \ för att skydda - i ett parentesuttryck . Du behöver bara ange - som det första tecknet, precis efter den inledande parentesen:

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

=> ORA-12728: invalid range in regular expression

Om du är nyfiken, när du stöter på [\-,:] Oracle förstår:"alla tecken i intervallet från \ till , eller tecknet : " . Anledningen till att detta skapar ett undantag är \ verkar vara efter , enligt deras ASCII-värde. Och Oracle accepterar inte räckvidd har ett startvärde efter det sista.

Å andra sidan:

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

Fungerar som förväntat.

Som en sidoanteckning, [-,:]{0,1} betyder "noll eller en förekomst av - eller , eller : " kan skrivas [-,:]? .


  1. Felsökning av variabelt minnesbidrag i SQL Server

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP kan inte castas till java.sql.Timestamp

  3. Skaffa språket som för närvarande används i SQL Server

  4. Bästa sättet att få PK Guid av insatt rad