Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query SQL:concatenazione dei risultati in una stringa

Se utilizzi SQL Server 2005 o versioni successive, puoi utilizzare questo FOR XML PATH & STUFF trucco:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

Il FOR XML PATH('') fondamentalmente concatena le tue stringhe insieme in un unico risultato XML lungo (qualcosa come ,code1,code2,code3 ecc.) e il STUFF mette un carattere "niente" al primo carattere, ad es. cancella la prima virgola "superflua", per darti il ​​risultato che probabilmente stai cercando.

AGGIORNAMENTO: OK - Ho capito i commenti - se il tuo testo nella tabella del database contiene già caratteri come < , > o & , quindi la mia soluzione attuale li codificherà infatti in < , > e & .

Se hai un problema con quella codifica XML, allora sì, devi guardare la soluzione proposta da @KM che funziona anche per quei caratteri. Una parola di avvertimento da parte mia:questo approccio è molto di più ad alta intensità di risorse e di elaborazione - solo così lo sai.