Concatenare i valori di una tabella in una stringa (T-SQL)
Con questo codice T-SQL è possibile concatenare in un unica stringa i valori contenuti nelle righe di una tabella.
Nell'esempio creo una stringa (@result) con i nomi dei database, separati da una virgola, che hanno il modello di recovery impostato su SIMPLE:
Nell'esempio creo una stringa (@result) con i nomi dei database, separati da una virgola, che hanno il modello di recovery impostato su SIMPLE:
SQL
-- tabella temporanea con i valori da concatenare
DECLARE @tbl TABLE (
[name] nvarchar(128)
)
-- carico i dati da unire nella stringa
INSERT INTO @tbl
SELECT [name]
FROM master.sys.databases
WHERE recovery_model_desc = 'SIMPLE'
-- x salvare il risultato della concatenazione
DECLARE @result nvarchar(2000)
SET @result = ''
-- temporaneo per i singoli valori
DECLARE @name nvarchar(128)
-- creo un cursore sulla tabella temporanea
DECLARE tbl_cursor CURSOR FOR
SELECT [name]
FROM @tbl
OPEN tbl_cursor
-- recupero il primo valore
FETCH NEXT FROM tbl_cursor INTO @name
-- ciclo su tutti i valori
WHILE @@FETCH_STATUS = 0
BEGIN
-- concateno i valori
SET @result = @result + (case WHEN @result = '' THEN '' ELSE ', ' END) + @name
-- recupero la prossima riga
FETCH NEXT FROM tbl_cursor INTO @name
END
CLOSE tbl_cursor
DEALLOCATE tbl_cursor
-- visualizzo la stringa risultante
SELECT @result AS [result]