sql >> Databáze >  >> RDS >> Oracle

ORA-12728:neplatný rozsah v regulárním výrazu

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


  1. Možnosti cloudového zálohování pro databáze MySQL a MariaDB

  2. MySQL:Jak povolit vzdálené připojení k mysql

  3. Pokračující vkládání v Oracle, když je vyvolána výjimka

  4. PDO::fetchAll vs. PDO::fetch ve smyčce