如何在SQL中查找字符串中每个字符的计数?
我有字符串AABBCCCDEEEE,预期结果为如何在SQL中查找字符串中每个字符的计数?,sql,Sql,我有字符串AABBCCCDEEEE,预期结果为 AA - 2 BB - 2 CC - 3 D - 1 E - 4 我认为以下是SQL Server中此问题的答案: with Temp as ( select substring('AABBCCCDEEEE',1,1) as character, 1 as number union all select substring('AABBCCCDEEEE',
AA - 2
BB - 2
CC - 3
D - 1
E - 4
我认为以下是SQL Server中此问题的答案:
with Temp as (
select substring('AABBCCCDEEEE',1,1) as character, 1 as number
union all
select substring('AABBCCCDEEEE',1+number,1) as character, number + 1
from Temp
where number < len('AABBCCCDEEEE')
)
select character, count(1) as count
from Temp
group by character option(maxrecursion 20);
您可以使用以下脚本逐个拆分字符并将其存储到临时表中。最后应用GROUP BY/COUNT以获得所需的结果 注意:这在MSSQL中是可行的。对于其他数据库,可以使用相同的逻辑
DECLARE @STR VARCHAR(MAX) = 'AABBCCCDEEEE'
DECLARE @LoopCountSt INT = 1
DECLARE @LoopCountEnd INT = LEN(@STR)
DECLARE @TempTable TABLE(
val VARCHAR(1)
)
WHILE @LoopCountSt <= @LoopCountEnd
BEGIN
INSERT INTO @TempTable(val)
SELECT SUBSTRING(@STR,@LoopCountSt,1)
SET @LoopCountSt = @LoopCountSt + 1
END
SELECT val, COUNT(*) Total_Count
FROM @TempTable
GROUP BY Val
我不知道“AA”是一个角色。@GordonLinoff,不是。他是说有两个A字。@CetinBasoz。“CC”是指有两个“C”字符吗?@GordonLinoff,是的,字符串中有3个字符,显然不在那里写CCC是一种打字错误。看起来你是在挑三拣四。@CetinBasoz,AAXXAA的预期结果是什么?
val Total_Count
A 2
B 2
C 3
D 1
E 4