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:

T-SQL

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 COLLATE

T-SQL

SELECT 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

T-SQL

-- 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.
Tags:
SQL90 SQL Server100 T-SQL66
Potrebbe interessarti anche: