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