我有一张这样的桌子。
SQL> SELECT * FROM FRUIT;
F_NAME
----------
APPLE
PPPALEP
APLEE
PPAALLEEPP
ornPpfpP
PPdhppPP
上面一个是我的源表,我想要低于输出。如果我给多个形式的'P',比如包括大写和小两个。 我想从每一行只计算'P'。
OUTPUT
------
F_NAME COUNT
------ -----
APPLE 2
PPPALEP 4
APLEE 1
PPAALLEEPP 4
ornPpfpP 4
PPdhppPP 6
提前致谢。
答案 0 :(得分:2)
Oracle非常方便regexp_count()
。所以:
select f_name, regexp_count(f_name, 'P') as cnt
from fruit;
答案 1 :(得分:0)
您可以通过用空格替换P
并从原始字符串中减去替换字符串的长度来计算出现次数。
select f_name,length(f_name)-length(replace(f_name,'P','')) cnt
from fruit
修改:根据OP的评论,要计算P
和p
,请在用空字符串替换字符时使用upper
或lower
。
select f_name,length(f_name)-length(replace(upper(f_name),'P','')) cnt
from fruit