Je ne connais pas de fonction native intégrée à SQL Server permettant de faire cela, mais il existe une fonction CHARINDEX très pratique. On utilisant la fonction CHARINDEX dans une petite boucle, il est très facile de déterminer le nombre d’occurrence d’une sous-chaine dans une chaine.
Ci-dessous une fonction que j’ai concoctée et qui répond à ta demande :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| CREATE FUNCTION dbo.FC_U_CountSubStr (
@pi_String varchar(8000),
@pi_SubString varchar(8000)
)
RETURNS INT
AS
BEGIN
DECLARE @LenString INT,
@i INT = 1,
@p INT = 0,
@NbrOccurrence INT = 0;
SET @LenString = len(@pi_String);
WHILE @i <= @LenString
BEGIN
SET @p = charindex (@pi_SubString, @pi_String, @i)
IF @p > 0
SET @NbrOccurrence += 1;
ELSE
BREAK;
SET @i = @p +1 ;
END;
RETURN @NbrOccurrence;
END;
GO |
Exemple d'utilisation :
SELECT dbo.FC_U_CountSubStr('mon@dresse@11752', '@') aS nombreOccurrences
Résultat :
Partager