Sql server 特定字符在字符串中出现的次数
是否有MS SQL Server函数计算特定字符在字符串中出现的次数 试试看:Sql server 特定字符在字符串中出现的次数,sql-server,Sql Server,是否有MS SQL Server函数计算特定字符在字符串中出现的次数 试试看: declare @t nvarchar(max) set @t='aaaa' select len(@t)-len(replace(@t,'a','')) 此功能没有直接功能,但您可以通过替换来完成: declare @myvar varchar(20) set @myvar = 'Hello World' select len(@myvar) - len(replace(@myvar,'o','')) 基本
declare @t nvarchar(max)
set @t='aaaa'
select len(@t)-len(replace(@t,'a',''))
此功能没有直接功能,但您可以通过替换来完成:
declare @myvar varchar(20)
set @myvar = 'Hello World'
select len(@myvar) - len(replace(@myvar,'o',''))
基本上,这告诉你有多少个字符被删除,因此有多少实例
额外:
通过除以正在搜索的字符串的长度,可以扩展到计算多字符字符串的出现次数。例如:
declare @myvar varchar(max), @tocount varchar(20)
set @myvar = 'Hello World, Hello World'
set @tocount = 'lo'
select (len(@myvar) - len(replace(@myvar,@tocount,''))) / LEN(@tocount)
您可以使用
replace
和len
执行此操作
计算str
中的x
字符数:
len(str) - len(replace(str, 'x', ''))
替换序列后查看字符串的长度
declare @s varchar(10) = 'aabaacaa'
select len(@s) - len(replace(@s, 'a', ''))
>>6
sql server的函数:
CREATE function NTSGetCinC(@Cadena nvarchar(4000), @UnChar nvarchar(100))
Returns int
as
begin
declare @t1 int
declare @t2 int
declare @t3 int
set @t1 = len(@Cadena)
set @t2 = len(replace(@Cadena,@UnChar,''))
set @t3 = len(@UnChar)
return (@t1 - @t2) / @t3
end
visual basic和其他的代码:
Public Function NTSCuentaChars(Texto As String, CharAContar As String) As Long
NTSCuentaChars = (Len(Texto) - Len(Replace(Texto, CharAContar, ""))) / Len(CharAContar)
End Function
您可以通过使用空字符串替换所需的字符、调用LENGTH函数并从原始字符串的长度中减去字符来完成这一操作
SELECT
CustomerName,
LENGTH(CustomerName) -
LENGTH(REPLACE(CustomerName, ' ', '')) AS NumberOfSpaces
FROM Customers;
从SQL SERVER 2016开始使用此函数
Select Count(value) From STRING_SPLIT('AAA AAA AAA',' ');
-- Output : 3
当这个函数与count函数一起使用时,它会给出
字符串中存在字符
使用此代码,它可以完美地工作。 我创建了一个接受两个参数的sql函数,第一个参数是我们要搜索的长字符串,它可以接受长度高达1500个字符的字符串(当然,您可以扩展它,甚至可以将它更改为文本数据类型)。 第二个参数是我们想要计算其发生次数的子串(它的长度最多为200个字符,当然你可以根据需要更改它)。而输出是一个整数,表示频率的个数…..享受吧
创建函数[dbo]。[GetSubstringCount]
(
@输入字符串nvarchar(1500),
@子字符串NVARCHAR(200)
)
返回整数
作为
开始
声明@K int、@StrLen int、@Count int、@SubStrLen int
设置@SubStrLen=(选择len(@SubString))
设置@Count=0
设置@k=1
设置@StrLen=(选择len(@InputString))
而@K 0)
开始
设置@Count=@Count+1
结束
结束
设置@K=@K+1
结束
返回@Count
结束
最佳
DECLARE @yourSpecialMark = '/';
select len(@yourString) - len(replace(@yourString,@yourSpecialMark,''))
它会计算您可以内联使用特殊标记“/”的次数,但必须小心列数据中的空格。更好地使用datalength() -或- 是否用2个字符替换
SELECT
ColName,
-LEN(ColName)
+LEN(REPLACE(Col, 'A', '><')) AS NumberOfLetterA
FROM ColName;
选择
ColName,
-LEN(ColName)
+LEN(更换(Col,'A','>这可能有助于尝试以下类似的SO问题,即SO的重复问题,该问题较旧且答案较多。可能使用DATALENGTH代替LEN会更好,因为LEN返回被修剪字符串的大小。使用DATALENGTH需要小心,因为它返回用于存储变量的数据大小。对于varchar,这可以作为nu用于存储数据的字节数等于字符串的长度。但是,nvarchar对每个字符使用2个字节,因此DATALENGTH将使报告的长度加倍。还有其他因素也可能影响DATALENGTH。请参阅“请注意,当所需字符位于st结尾时,多字符字符串的代码解决方案将返回+1”ring.例如:set@myvar='lo Hello World,Hello World,lo lo'返回6而不是5。这是让我快乐的简单事情。谢谢!非常聪明的主意
SELECT
ColName,
DATALENGTH(ColName) -
DATALENGTH(REPLACE(Col, 'A', '')) AS NumberOfLetterA
FROM ColName;
SELECT
ColName,
-LEN(ColName)
+LEN(REPLACE(Col, 'A', '><')) AS NumberOfLetterA
FROM ColName;