Marzo 11, 2013
kenneth
En el lenguaje de consulta estructurado (SQL) es el lenguaje de acceso a bases de datos relacionales, en algunas ocaciones nos enfrentamos a ciertos requerimientos los cuales nos presentan cierto grado de dificultad para superarlo, uno de estos puede ser el siguiente caso:
Obtener todos los correos electronicos de los usuarios del sistema separados por coma ’,‘.
En este ejemplo crearemos una tabla llamada “Usuarios”, en la base de datos relacional, y definiremos la siguiente estructura:
<pre title="Creacion tabla Usuarios">CREATE TABLE Usuarios(
Id INT PRIMARY KEY IDENTITY(1,1),
Correo VARCHAR(200) UNIQUE
)
Ahora bien, para solucionar requerimiento podemos pensar en utilizar un Cursor T-SQL sin embargo en este caso veremos una manera que no usa tantos recursos y obtendremos el mismo r esultado.
Declaramos una variable de tipo VARCHAR(MAX) y la inicializamos en blanco, esta variable es donde almacenaremos todos los resultados de la consulta,
<pre title="Declarando Variable @result">DECLARE @result VARCHAR(MAX) = ''
Luego crearemos nuestra consulta SQL sobre la tabla Usuario asignadole el valor a la variable @result contatenando cada resultado de todas las filas, de la siguiente manera:
<pre title="Consultando Usuarios">SELECT @result = @result +',' + u.Correo
FROM Usuarios u
Antes de terminar debemos ajustar el resultado de la consulta utilizando la funcion ’SUBSTRING’ y luego podemos utilizar nuestra variable con la informacion adecuada, por ejemplo imprimirla en consola utilizando la funcion PRINT, el codigo SQL se veria como el siguiente,
<pre title="Ajustar resultado">SET @result = SUBSTRING(@result,2,LEN(@result))
PRINT @result
Espero que les sea de mucha ayuda,
Saludos,