如何计算单个SQL中varchar中字符的出现次数?

use*_*462 4 sql oracle

假设有一个变量

v_Source := 'stack#over#flo#w';
Run Code Online (Sandbox Code Playgroud)

如何#在单个SQL查询中获取其中' ' 的出现次数?

Sac*_*chu 10

select length('stack#over#flo#w') - length(replace('stack#over#flo#w','#',null)) 
from dual;
Run Code Online (Sandbox Code Playgroud)

从oracle 11开始,您可以使用REGEXP_COUNT

select REGEXP_COUNT('stack#over#flo#w', '#') from dual;
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,为旧版本提供解决方案,+ 1 (2认同)

MT0*_*MT0 7

SELECT REGEXP_COUNT( 'stack#over#flo#w', '#' )
FROM   DUAL
Run Code Online (Sandbox Code Playgroud)