2016-05-31 4 views
4

Say есть переменнаяКак вычислить количество вхождений символа в varchar в одном SQL?

v_Source := 'stack#over#flo#w'; 

Как получить число вхождений «#» в нем в одном запросе SQL?

+0

Пожалуйста, измените вопрос с тем, что вы пробовали и где она не работает? – MT0

+0

'LENGTH () - LENGTH (REPLACE (, '#', ''))' – MatBailie

ответ

10
select length('stack#over#flo#w') - length(replace('stack#over#flo#w','#',null)) 
from dual; 

С оракула 11 вы можете использовать REGEXP_COUNT

select REGEXP_COUNT('stack#over#flo#w', '#') from dual; 
+2

Это хороший ответ, который предоставляет решение для более старых версий, +1 – sagi

+1

Это также немного более эффективно, поскольку regexp - это CPU- интенсивный. – mathguy

7
SELECT REGEXP_COUNT('stack#over#flo#w', '#') 
FROM DUAL