De * operator is standaard 'hebzuchtig'
. Je staat alle tekens toe tussen distinct en ) , in elke hoeveelheid. en inclusief de eerste ) zelf.
Zoals EatÅPeach suggereerde, kun je het niet-hebzuchtig maken met ? :
Dus hier, met .*? in plaats van .* :
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct.*?\)')
from dual;
Of u kunt specificeren dat het een willekeurig teken moet zijn, behalve ) met [^)]* in plaats van .* .
select regexp_substr(
'select count(distinct empno), count(distinct deptno) from emp',
'count\(distinct[^)]*\)')
from dual;