Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ciclo sulla tabella (senza utilizzare il cursore) per concatenare i dati

Puoi concatenare senza il ciclo tramite qualcosa come di seguito; aggiungi semplicemente la tua query / join ecc. Se necessario:

DECLARE @s varchar(max) = ''

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

SELECT @s

(tu devi assicurati che non ci siano NULL è lì dentro)

ma non farlo!

Il database non il posto per costruire html; non ultimo, ti apre enormemente alle vulnerabilità XSRF. Lo farei nel livello dell'interfaccia utente, facendo un uso appropriato delle funzioni di codifica html fornite da qualsiasi piattaforma tu stia utilizzando. La concatenazione cieca di stringhe come html è praticamente alla pari con la concatenazione cieca di stringhe utente in TSQL (invece di usare parametri); nella migliore delle ipotesi la formattazione verrà interrotta (nessuna corretta gestione di < , ecc.) - nel peggiore dei casi metti i tuoi utenti a rischio diretto di attacco.