sql >> Database teknologi >  >> RDS >> Oracle

Problem med Oracle regex

* operatoren er som standard 'greedy' . Du tillader alle tegn mellem distinct og ) , i enhver mængde. og inklusive den første ) sig selv.

Som EatÅPeach foreslog, kan du gøre det ikke-grådigt med ? :

Så her, med .*? i stedet for .* :

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

Eller du kan angive, at det skal være et hvilket som helst tegn undtagen ) med [^)]* i stedet for .* .

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


  1. Opdater sætning i MySQL ved hjælp af C#

  2. Vælg tilfældig række for hver gruppe

  3. Skal jeg gemme et felt PRICE som en int eller som en float i databasen?

  4. Fjern simple HTML-tags fra String i Oracle via RegExp, forklaring nødvendig