Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Boucle sur la table (sans utiliser le curseur) pour concaténer les données

Vous pouvez concaténer sans la boucle via quelque chose comme ci-dessous; ajoutez simplement votre propre requête / jointure, etc., si nécessaire :

DECLARE @s varchar(max) = ''

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

SELECT @s

(vous devez assurez-vous qu'il n'y a pas de NULL s là-dedans)

mais ne faites pas ça !

La base de données n'est pas l'endroit pour créer du HTML ; et surtout, cela vous ouvre énormément aux vulnérabilités XSRF. Je le ferais dans la couche d'interface utilisateur, en utilisant de manière appropriée les fonctions d'encodage html fournies par la plate-forme que vous utilisez. La concaténation aveugle de chaînes en tant que html est à peu près comparable à la concaténation aveugle de chaînes utilisateur dans TSQL (au lieu d'utiliser des paramètres) ; au mieux le formatage sera bouché (pas de gestion correcte de < , etc) - au pire, vous exposez vos utilisateurs à un risque direct d'attaque.