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

Проблем с регулярен израз на Oracle

* операторът е „алчен“ по подразбиране . Позволявате всякакви знаци между distinct и ) , във всякакви количества. и включително първия ) себе си.

Както предложи EatÅPeach, можете да го направите неалчен с ? :

Така че тук, с .*? вместо .* :

select regexp_substr(
  'select count(distinct empno), count(distinct deptno) from emp',
    'count\(distinct.*?\)')
from dual;

Или можете да посочите, че трябва да бъде произволен знак освен ) с [^)]* вместо .* .

select regexp_substr(
  'select count(distinct empno), count(distinct deptno) from emp',
    'count\(distinct[^)]*\)')
from dual;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не разбирам защо моята група от се проваля

  2. Oracle подзаявката в ключова дума е бавна на 12c

  3. Прогнозиране на данни от времеви редове в Oracle/SQL

  4. връзка с базата данни на oracle в web.config asp.net

  5. Изпълнение на Oracle SQL скриптове с Ansible playbook