[SQL 2008] Crear una lista delimitada por comas usando SELECT.


Saludos amigos, una ventaja de SQL 2008 es que nos permite hacer el uso de una sobrecarga del operador “=”, para poder asignar múltiples valores a una variable TSQL  como:

SELECT @Var = @Var

La instrucción anterior en SQL 2005 no marca error pero solo nos guarda el ultimo valor asignado. Les dejo un ejemplo que aseguro que a muchos nos será de gran utilidad.

Ha!!! se me olvidaba que en SQL 2008 podemos asignar un valor directo a una variable cuando la declaramos ahorrándonos el SET.

DECLARE @txt AS VARCHAR(250) = ”

También es necesario mencionar que inicializamos la variable con un valor vacío ya que no es correcto concatenar valores NULL a una cadena.

1. Creamos la tabla de ejemplo.

CREATE TABLE dbo.PRB_USUARIOS
(Nombre VARCHAR(40),
Apellidos VARCHAR(40))
GO

2. Insertamos algunos datos.

INSERT INTO dbo.PRB_USUARIOS VALUES ('Ivan','Rangel')
INSERT INTO dbo.PRB_USUARIOS VALUES ('Claudia','Perez')
INSERT INTO dbo.PRB_USUARIOS VALUES ('Maria','Cuadros')
INSERT INTO dbo.PRB_USUARIOS VALUES ('Mariana','Rangel')
INSERT INTO dbo.PRB_USUARIOS VALUES ('Mario','Cantinflas')
INSERT INTO dbo.PRB_USUARIOS VALUES ('Pedro','Infante')
GO

3. Ejecutamos la consulta de concatenación (Muy fácil :)).

DECLARE @txt AS VARCHAR(250) = ''
SELECT @txt = @txt + Nombre + ' ' + Apellidos + ', ' FROM dbo.PRB_USUARIOS  
SELECT @txt AS txtConcatenado 
GO

Y nos da el siguiente resultado.

image 

Espero les sea de ayuda, dejen comentarios!!!.

  1. I learned something here. Thanks for posting.

    • Ruben
    • 21/08/09

    Gracias! me ha gustado esa select con @txt=@txt…
    MUY UTIL!!

    • carlos
    • 3/09/10

    millon de gracias , super util, me solucionaste un problemon

    • Antonio
    • 7/12/11

    Muchas gracias por la ayuda, pero me surgio una duda
    como le podria hacer si quiero modificar el nombre de la tabla??
    como se me ocurre es con una variable q especifique el prefijo de la tabla

    lo qUe quiero decir es algo como esto

    Declare @lstQuestionGroup varchar(max)= ”
    Declare @nameTable varchar(max)
    Set @nametable= @tablename+’Questiontable’

    select @lstQuestionGroup = @lstQuestionGroup +convert(varchar,QuestionGroup)+’,’ from @nametable ;

    select @lstQuestionGroup

    espero me puedan ayudar
    Gracias

  1. 26/03/09

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: