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

Loop na tabela (sem usar o cursor) para concatenar dados


Você pode concatenar sem o loop através de algo como abaixo; basta adicionar sua própria consulta/junções etc, conforme necessário:
DECLARE @s varchar(max) = ''

SELECT @s = @s + '<br/><b>' + CONVERT(varchar(10), i.CreatedDate, 101) + '</b>' + ISNULL(i.Notes, '')
FROM @Items i

SELECT @s

(você deve verifique se não há NULL está lá)

mas não faça isso!


O banco de dados não o lugar para construir html; não menos importante, abre extremamente às vulnerabilidades XSRF. Eu faria isso na camada de interface do usuário, fazendo uso apropriado das funções de codificação html fornecidas por qualquer plataforma que você esteja usando. A concatenação cega de strings como html está praticamente no mesmo nível da concatenação cega de strings de usuário em TSQL (em vez de usar parâmetros); na melhor das hipóteses a formatação será borked (sem manipulação correcta de < , etc) - na pior das hipóteses, você coloca seus usuários em risco direto de ataque.