String_split in T-SQL con rownumber
In T-SQL è disponibile la funzione string_split che permette di splittare una stringa in base a un separatore per creare una tabella
che da come risultato questa tabella
Sicuramente non serve avere le righe vuote, quindi si può aggiungere una where per filtrare i risultati
che da come risultato questa tabella
A volte può tornare utile avere una numerazione delle righe/parole, per far questo si può usare una tabella temporanea con un campo di tipo identity
che da come risultato questa tabella
T-SQL
DECLARE @text nvarchar(100) = 'Prova di split di una stringa ';
SELECT [value]
FROM string_split(@text, ' ')
Text
value
----------------------------------------------------------------------------------------------------
Prova
di
split
di
una
stringa
(14 rows affected)
Sicuramente non serve avere le righe vuote, quindi si può aggiungere una where per filtrare i risultati
T-SQL
DECLARE @text nvarchar(100) = 'Prova di split di una stringa ';
SELECT [value]
FROM string_split(@text, ' ')
WHERE RTRIM(value) <> '';
Text
value
----------------------------------------------------------------------------------------------------
Prova
di
split
di
una
stringa
(6 rows affected)
Questa è un alternativa all'uso di replace e trim SET @Text = rtrim(ltrim(REPLACE(REPLACE(@text, ' ', ' '), ' ', ' ')));
A volte può tornare utile avere una numerazione delle righe/parole, per far questo si può usare una tabella temporanea con un campo di tipo identity
T-SQL
DECLARE @text nvarchar(100) = 'Prova di split di una stringa';
-- dichiaro una variabile di tipo tabella
DECLARE @Tbl TABLE (
[RowNumber] int identity(1,1),
[Word] nvarchar(50)
);
-- inserisco le parole
INSERT INTO @Tbl
SELECT [value]
FROM string_split(@text, ' ')
WHERE RTRIM(value) <> '';
-- visualizzo il risultato
SELECT *
FROM @Tbl;
Text
RowNumber Word
----------- --------------------------------------------------
1 Prova
2 di
3 split
4 di
5 una
6 stringa
(6 rows affected)