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

Redondear o truncar decimales en SQLServer

Después de bastante tiempo por fin me doy el tiempo de hacer otra publicación sobre programación, hoy veremos como redondear o truncar decimales en sql.

Con redondeo:
SELECT ROUND(100.4658, 2)
---------------------------------------
100.4700

Truncado:
SELECT ROUND(100.4658, 2, 1)
---------------------------------------
100.4600

Truncar y quitar ceros a la derecha
SELECT CONVERT(FLOAT, ROUND(100.4658, 2, 1))
----------------------
100.46

Espero que estoy les sea de utilidad, y no se olviden comentar y dar un +1.

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