sql-server - 怎么算没有。sql中字符串中字符的出现次数?
问题描述
我想要计算单词中出现的所有字符。例如,如果我写彼得,我想要这样的输出
P 1
e 2
t 1
e 2
r 1
任何帮助表示赞赏。
解决方案
如果对 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')
推荐阅读
- c++ - 如何在 C++ 中以编程方式检查字符串类型
- node.js - Kubernetes容器频繁重启
- dart - 未处理的异常:堆栈溢出 -dart
- python - 在 Flask 应用程序中获取状态码和响应大小
- c# - 如何在 Avalonia 上模拟 WinUI stroyboard 动画?
- dataframe - 从 s3 加载 pyspark 数据框并保留行顺序
- scala - value - 不是类型参数 T | 的成员 斯卡拉错误
- python - 在 Python 中获取相对导入的问题
- python - 根据值的趋势过滤熊猫行
- laravel - 来自其他关系的 Laravel 资源调用关系