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

Problém s regulárním výrazem Oracle

* operátor je ve výchozím nastavení 'chamtivý' . Povolujete jakékoli znaky mezi distinct a ) , v libovolném množství. a včetně prvního ) sám.

Jak navrhl EatÅPeach, můžete to udělat tak, že nebudou chamtivé pomocí ? :

Takže zde s .*? místo .* :

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

Nebo můžete zadat, že by to měl být jakýkoli znak kromě ) s [^)]* místo .* .

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


  1. překonat 32k limit při vkládání parametru oracle clob IN pomocí spring StoredProcedure

  2. Jak mohu třídit neanglické řetězce v MySQL?

  3. Jak zjistím, zda je databáze Oracle nastavena na automatické potvrzení?

  4. Jak potlačit INFO zprávy při spouštění skriptů psql