sql >> Base de Datos >  >> RDS >> Sqlserver

Bucle en la tabla (sin usar el cursor) para concatenar datos

Puede concatenar sin el ciclo a través de algo como a continuación; simplemente agregue su propia consulta / uniones, etc. según sea necesario:

DECLARE @s varchar(max) = ''

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

SELECT @s

(usted debe asegúrese de que no haya NULL está ahí)

¡pero no hagas esto!

La base de datos no el lugar para construir html; no menos importante, te abre enormemente a las vulnerabilidades XSRF. Haría esto en la capa de la interfaz de usuario, haciendo un uso apropiado de las funciones de codificación html proporcionadas por cualquier plataforma que esté utilizando. La concatenación ciega de cadenas como html está prácticamente a la par con la concatenación ciega de cadenas de usuario en TSQL (en lugar de usar parámetros); en el mejor de los casos, el formato se borrará (no se manejará correctamente <) , etc.):en el peor de los casos, pone a sus usuarios en riesgo directo de ataque.