sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta SQL:concatenación de resultados en una cadena

Si tiene SQL Server 2005 o superior, puede usar este FOR XML PATH & STUFF truco:

DECLARE @CodeNameString varchar(100)

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

FOR XML PATH('') básicamente concatena sus cadenas en un resultado XML largo (algo así como ,code1,code2,code3 etc.) y las STUFF pone un carácter de "nada" en el primer carácter, p. borra la primera coma "superflua" para darte el resultado que probablemente estés buscando.

ACTUALIZACIÓN: OK - Entiendo los comentarios - si su texto en la tabla de la base de datos ya contiene caracteres como < , > o & , luego mi solución actual de hecho, los codificará en < , > y & .

Si tiene un problema con esa codificación XML, entonces sí, debe mirar la solución propuesta por @KM que también funciona para esos caracteres. Una palabra de advertencia de mí:este enfoque es mucho más intensivo en recursos y procesamiento, solo para que lo sepas.