假设我有两列:
Table: MyTable
myString
----------
abaa
abb
a
bc
我正在寻找一个可以返回myString列中每个char的计数的查询。在这种情况下,它会返回:
letter count
-----------------
a 5
b 3
c 1
我发现计算字符的唯一方法是通过一个复杂的删除方法(计算没有char的长度,删除char,然后重新计算),所以我想知道是否有办法完成这个更复杂的任务。
答案 0 :(得分:3)
这将很慢(可能是SQL中的任何解决方案),但您可以使用numbers
table拆分字母并计算它们:
SELECT
SUBSTRING(myString, number, 1) AS Letter,
COUNT(*) AS LetterCount
FROM
numbers n
JOIN myTable mt
ON n.number <= CHAR_LENGTH(mt.myString)
GROUP BY SUBSTRING(myString, number, 1)
答案 1 :(得分:2)
你非常接近目标。您可以使用以下查询来实现此目的:
select sum(length(mystring)) - sum(length(replace(mystring, 'a', ''))) as count_a
from mytable
答案 2 :(得分:0)