首页 > 解决方案 > 怎么算没有。sql中字符串中字符的出现次数?

问题描述

我想要计算单词中出现的所有字符。例如,如果我写彼得,我想要这样的输出

P 1
e 2
t 1
e 2
r 1

任何帮助表示赞赏。

标签: sql-server

解决方案


如果对 TVF 开放。作为表值函数,它可以用于CROSS APPLY

例子

Select *
      ,Cnt = sum(1) over (partition by RetVal) 
 From  [dbo].[tvf-Str-Parse-Char]('Peter') 
 Order By RetSeq

退货

RetSeq  RetVal  Cnt
1       P       1
2       e       2
3       t       1
4       e       2
5       r       1

感兴趣的功能

CREATE FUNCTION [dbo].[tvf-Str-Parse-Char] (@String varchar(max))
Returns Table
As
Return (
    with   cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
           cte2(N) As (Select Top (IsNull(DataLength(@String),0)) Row_Number() over (Order By (Select NULL)) From cte1 a,cte1 b,cte1 c,cte1 d,cte1 e,cte1 f)

    Select RetSeq=N
          ,RetVal=Substring(@String,N,1) 
     From  cte2
) 
--Max 1 Million Observations
--Select * from [dbo].[tvf-Str-Parse-Char]('this is a string') 

推荐阅读