Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-12728:невалиден диапазон в регулярен израз

Редовните изрази не използват \ за защита на - в израз в скоби . Трябва само да поставите - като първи знак, точно след отварящата скоба:

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

=> ORA-12728: invalid range in regular expression

Ако сте любопитни, когато срещнете [\-,:] Oracle разбира:"всеки знак в диапазона от \ до , или знакът : " . Причината, поради която това предизвиква изключение, е \ изглежда е след , според тяхната ASCII стойност. И Oracle не приема обхват с начална стойност след крайната.

От друга страна:

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

Работи според очакванията.

Като странична бележка, [-,:]{0,1} което означава "нула или едно срещане на - или , или : " може да бъде написано [-,:]? .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инструкция за вмъкване на Oracle, ако не съществува

  2. Възможно ли е да се използва return в съхранена процедура?

  3. Създайте потребител от низови променливи в PL/SQL блок

  4. .NET / Oracle:Как да изпълним скрипт с DDL изрази програмно

  5. EXTRACT (datetime) Функция в Oracle