Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 特定字符在字符串中出现的次数_Sql Server - Fatal编程技术网

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','')) 基本

是否有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 @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;