In
T-SQL è possibile contare le occorrenze di una stringa usando la funziona
LEN e
REPLACE.
Ad esempio se voglio contare quanto volte compare il carattere
A in una frase:
DECLARE @s nvarchar(150) = 'quante A ci sono in questa frase?'
SELECT LEN(@s) - LEN(REPLACE(@s, 'a', '')) AS [count]
-- result: 4
in pratica si va per differenza, si eliminano tutti i caratteri che si vuole contare (REPLACE) e si sottrae la lunghezza della nuova stringa con quella originale.
In questo caso il conteggio è case
insensitive, se voglio eseguire il conteggio case
sensitive posso usare
COLLATESELECT LEN(@s) - LEN(REPLACE(@s COLLATE Latin1_General_BIN, 'a', '')) AS [count]
-- result: 3
Se invece si vuole contare una parola o
stringa, al posto di un singolo carattere
-- testo iniziale
DECLARE @s nvarchar(150) = 'quante "parole" ci sono in questa frase composta da più "parole"?'
-- stringa da contare
DECLARE @word nvarchar(150) = 'parole'
-- conteggio stringa
SELECT (LEN(@s) - LEN(REPLACE(@s, @word, ''))) / LEN(@word) AS [count]
-- result: 2
in questo caso divido il conteggio risultate per la lunghezza della stringa da contare.