miércoles, 24 de septiembre de 2008

Retornar registros separada por comas con MSSQL

Otra vez reutilizando cosas que me habian funcionado en otro proyectos, pero con la diferencia de plataforma que ahora me obligan a usar, me nacio una duda que anteriormente resolvi y publique en el blog "Retornar registros separada por comas con MYSQL". Ahora el escenario es diferente ya que estoy usando MSSQL (Microsoft SQL Server 2005) con VB.NET 2005.

El punto es que buscaba la solucion para listar el resultado de una consulta de una manera mas personalizada y de forma horizontal usando como separadores la coma ",". Como escribi anteriormente en otro articulo en MYSQL es mucho mas facil por que contiene una funcion , pero lamentablemente BILL no nos da una funcion tan util como aquella, por lo que investigando encontre una forma personalizada para emular dicha funcion el MSSQL
-- Declaramos la variable que contendra el resultado
DECLARE @x varchar(8000)

-- Cargamos los registros consultados en la variable
SELECT @x = COALESCE(@x+', ','')+ISNULL(CONVERT(varchar,nombre),'')
FROM FILTROS
WHERE ID_FILTROPADRE = 169

-- Mostramos el valor de la consulta separada por comas
SELECT @x
Observacion: Lo malo de esta consulta es que si devuelve demasiados registros y al momento de concatenarlos en la variable supera la longitud de la cadena provoca un error.

No hay comentarios: