Buscar este blog

viernes, 29 de junio de 2012

Concatenar valores por comas sin validar si es el primero o ultimo elemento

Para concatenar elementos en SQLServer ya sea separadas por coma u otro carácter de separación podemos utilizar la función COALESCE, esta función es parecido a un CASE, si la primera expresión es nula tomara la siguiente expresión y así de esta manera nos evitaremos validar si es la primera vez para no ponerle el carácter de separación ",".

Ejemplo:
-- Tabla temporal
DECLARE @tblNombres TABLE(Nombre VARCHAR(30))
-- Inserto sus valores
INSERT INTO @tblNombres
        ( Nombre )
SELECT 'Jose'
UNION
SELECT 'Juan'
UNION
SELECT 'Pedro'
UNION
SELECT 'Paco'
UNION
SELECT 'Luis'
SELECT * FROM @tblNombres

-- Aquí la solución sencialla de concatenar sin case o if
DECLARE @sNombres VARCHAR(100)
SELECT @sNombres = COALESCE(@sNombres + ',', '') + Nombre
FROM @tblNombres
SELECT @sNombres AS Nombres


Resultado:
(5 row(s) affected)
Nombre
------------------------------
Jose
Juan
Luis
Paco
Pedro
(5 row(s) affected)

Nombres
----------------------------------------------------------------------------------------------------
Jose,Juan,Luis,Paco,Pedro
(1 row(s) affected)

No se les olvide comentar y darle un +1.

----------------------------------------------------------------------------------------------------
Lo que se puede imaginar... se puede programar

No hay comentarios:

Publicar un comentario