【问题标题】:How to find the count of every character in string in SQL?如何在 SQL 中查找字符串中每个字符的计数?
【发布时间】:2019-11-29 07:19:05
【问题描述】:

我有字符串"AABBCCCDEEEE",预期结果是

AA - 2
BB - 2
CC - 3
D  - 1
E  - 4

【问题讨论】:

  • 我没有意识到'AA'是一个字符。
  • @GordonLinoff,它不是。他的意思是有2个A字符。
  • @CetinBasoz 。 . .那么'CC' 表示有两个'C' 字符?
  • @GordonLinoff,是的,字符串中有 3 个,显然不在那里写 CCC 是一个错字。看起来你很挑剔。
  • @CetinBasoz,“AAXXAA”的预期结果是什么?

标签: sql


【解决方案1】:

我认为这是 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);

Result Table

【讨论】:

    【解决方案2】:

    您可以使用以下脚本逐个拆分字符并将它们存储到临时表中。最后应用 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
    

    输出是-

    val Total_Count
    A   2
    B   2
    C   3
    D   1
    E   4
    

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2014-08-31
      相关资源
      最近更新 更多