Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta SQL - Concatenando resultados em uma string


Se você estiver no SQL Server 2005 ou superior, poderá usar este FOR XML PATH & STUFF truque:
DECLARE @CodeNameString varchar(100)

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

O FOR XML PATH('') basicamente concatena suas strings em um resultado XML longo (algo como ,code1,code2,code3 etc.) e o STUFF coloca um caractere "nada" no primeiro caractere, por exemplo apaga a primeira vírgula "supérflua", para fornecer o resultado que você provavelmente está procurando.

ATUALIZAÇÃO: OK - eu entendo os comentários - se o seu texto na tabela do banco de dados já contém caracteres como < , > ou & , então minha solução atual irá de fato codificá-los em < , > e & .

Se você tiver um problema com essa codificação XML - então sim, você deve olhar para a solução proposta por @KM que também funciona para esses caracteres. Uma palavra de aviso de mim:esta abordagem é muito mais recursos e processamento intensivo - só para você saber.