In T-SQL è disponibile la funzione string_split che permette di splittare una stringa in base a un separatore per creare una tabella
T-SQL
DECLARE @text nvarchar(100) = 'Prova    di split     di una stringa ';
	
SELECT [value]
FROM string_split(@text, ' ')
che da come risultato questa tabella
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) <> '';
che da come risultato questa tabella
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;
che da come risultato questa tabella
RowNumber   Word
----------- --------------------------------------------------
1           Prova
2           di
3           split
4           di
5           una
6           stringa

(6 rows affected)
Potrebbe interessarti anche: