[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!!!.

Anuncios

5 comentarios en “[SQL 2008] Crear una lista delimitada por comas usando SELECT.

  1. 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

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