Nombre de fois qu'un caractère particulier apparaît dans une string

Existe-t-il une fonction MS SQL Server qui count le nombre de fois qu'un caractère particulier apparaît dans une string?

Il n'y a pas de fonction directe pour cela, mais vous pouvez le faire avec un rlocation:

declare @myvar varchar(20) set @myvar = 'Hello World' select len(@myvar) - len(replace(@myvar,'o','')) 

Fondamentalement, cela vous indique combien de caractères ont été supprimés, et donc combien il y en avait.

Supplémentaire:

Ce qui précède peut être étendu pour countr les occurrences d'une string multi-char en divisant par la longueur de la string recherchée. Par exemple:

 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) 

Regardez la longueur de la string après le rlocation de la séquence

 declare @s varchar(10) = 'aabaacaa' select len(@s) - len(replace(@s, 'a', '')) >>6 

Vous pouvez le faire en utilisant replace et len .

Compter le nombre de x caractères dans str :

 len(str) - len(replace(str, 'x', '')) 

essayez ça:

 declare @t nvarchar(max) set @t='aaaa' select len(@t)-len(replace(@t,'a','')) 

fonction pour le server sql:

 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 

Code pour Visual basic et autres:

 Public Function NTSCuentaChars(Texto As Ssortingng, CharAContar As Ssortingng) As Long NTSCuentaChars = (Len(Texto) - Len(Replace(Texto, CharAContar, ""))) / Len(CharAContar) End Function