Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Schleife in der Tabelle (ohne den Cursor zu verwenden), um Daten zu verketten

Sie können ohne die Schleife über etwas wie unten verketten; Fügen Sie bei Bedarf einfach Ihre eigene Abfrage / Joins usw. hinzu:

DECLARE @s varchar(max) = ''

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

SELECT @s

(Sie müssen Stellen Sie sicher, dass es keine NULL gibt s drin)

aber tu das nicht!

Die Datenbank ist nicht der Ort, um HTML zu erstellen; nicht zuletzt öffnet es dich enorm zu XSRF-Schwachstellen. Ich würde dies in der UI-Schicht tun und die HTML-Codierungsfunktionen, die von der von Ihnen verwendeten Plattform bereitgestellt werden, angemessen nutzen. Das blinde Verketten von Zeichenfolgen als HTML ist ziemlich gleichbedeutend mit dem blinden Verketten von Benutzerzeichenfolgen in TSQL (anstatt Parameter zu verwenden); bestenfalls wird die Formatierung gebohrt (kein korrekter Umgang mit < , usw.) - im schlimmsten Fall setzen Sie Ihre Benutzer einem direkten Angriffsrisiko aus.