PLSQL-字符串中所有字符的计数

时间:2019-07-18 15:13:15

标签: sql string oracle plsql character

我希望能够根据Oracle PLSQL查询的结果生成给定字符串中所有字符的计数。

例如,给定字符串“ strings”,输出将是这样

character | count
-----------------
g         | 1
i         | 1
n         | 1
r         | 1
s         | 2
t         | 1

我的想法与

相似
SELECT COLUMN, COUNT(COLUMN) FROM TABLE GROUP BY COLUMN

但是这需要将字符串转换为一组字符,而这正是我遇到的问题。

理想情况下,这扩展到所有ASCII字符的计数,而不仅仅是A-Z,以便对数据库的内容进行分析。

我很好奇,是否有比创建过程和将字符列入白名单以在给定字符串上计数和运行更好的方法呢?

1 个答案:

答案 0 :(得分:2)

这是将字符串拆分为字符的常用方法; 一旦每个字符都有一条记录,对它们进行计数就非常简单:

select single_char, count(*)
from (
    select substr(x, level, 1) as single_char
    from (select 'abbabbaccb' x from dual)
    connect by level <= length(x)
    )
group by single_char