Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Problem z wyrażeniem regularnym Oracle

* operator jest domyślnie „chciwy” . Zezwalasz na dowolne znaki między distinct i ) , w dowolnej ilości. i w tym pierwszy ) się.

Jak zasugerował EatÅPeach, możesz sprawić, że nie będzie zachłanny za pomocą ? :

Więc tutaj, z .*? zamiast .* :

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

Lub możesz określić, że powinien to być dowolny znak z wyjątkiem ) z [^)]* zamiast .* .

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. Czy istnieje sposób na przechowywanie tekstu Unicode w bazie danych Oracle skonfigurowanej jako „US7ASCII”

  2. Dlaczego wybór z procedury składowanej nie jest obsługiwany w relacyjnych bazach danych?

  3. Podwójne cytaty w aliasach kolumn Oracle

  4. Zaktualizuj kolumnę o wartości z innej kolumny

  5. Jak uzyskać nazwę dnia z daty w Oracle?