如何计算varchar2字符串中字符-的出现次数?

例:

select XXX('123-345-566', '-') from dual;
----------------------------------------
2

最佳答案

干得好:

select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;

从技术上讲,如果要检查的字符串仅包含要计数的字符,则上面的查询将返回NULL;否则,将返回NULL。以下查询将在所有情况下给出正确的答案:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
coalesce中的最后一个0捕获了您要计算一个空字符串的情况(即NULL,因为在Oracle中length(NULL)= NULL)。

10-08 09:19
查看更多