Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

¿Cómo se pueden concatenar todos los valores de los campos de una tabla en sql 2008?

Estas en el tema de ¿Cómo se pueden concatenar todos los valores de los campos de una tabla en sql 2008? en el foro de SQL Server en Foros del Web. Hola, tengo una consulta, les agradecería muchísimo una ayuda. La cuestión es que necesito concatenar todos los valores de los campos de una tabla. Juntar ...
  #1 (permalink)  
Antiguo 17/09/2012, 08:27
 
Fecha de Ingreso: abril-2010
Mensajes: 50
Antigüedad: 14 años
Puntos: 2
¿Cómo se pueden concatenar todos los valores de los campos de una tabla en sql 2008?

Hola, tengo una consulta, les agradecería muchísimo una ayuda. La cuestión es que necesito concatenar todos los valores de los campos de una tabla. Juntar todos los valores uno a uno y separarlos por ; , si es nulo poner un espacio. Lo necesito hacer en un procedimiento almacenado que devuelva una cadena con la concatenación. Una forma que he probado fuera del procedimiento es esta:

SELECT ISNULL(CONVERT(nvarchar(MAX),id),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),titulo),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),editorial),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),genero),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),precio),' ') + CAST(';' AS nvarchar(MAX))
AS concatenar FROM LIBROS

Esto me devuelve la siguiente cadena: 1;codigo da vinci;minotauro;misterio;50;

La cuestión es que dentro del procedimiento me falla, lo hago de la siguiente manera:

CREATE PROCEDURE [dbo].[SELECCION]
@id bigint,@devolucion nvarchar(MAX) OUTPUT
AS
BEGIN

DECLARE @devolucion2 nvarchar(MAX);

SET @devolucion2 = SELECT ISNULL(CONVERT(nvarchar(MAX),id),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),titulo),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),editorial),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),genero),' ') + CAST(';' AS nvarchar(MAX))
+ ISNULL(CONVERT(nvarchar(MAX),precio),' ') + CAST(';' AS nvarchar(MAX))
AS concatenar FROM LIBROS
WHERE id= @id)
print @devolucion2


return @devolucion2

END

Me sale el siguiente error:

Msg 245, Level 16, State 1, Procedure SELECCION, Line 35
Conversion failed when converting the nvarchar value 1;codigo da vinci;minotauro;misterio;50; to data type int.

En la línea 35 esta el AS concatenar que es como si valiera int y no se pudiera asignar toda la cadena.

Cómo podría subsanar el error? Otro problema que tengo con esta select de concatenación es que es muy muy larga, si tengo que asignar 50 parámetros, la select sería kilométrica. Alguien sabe alguna otra manera de concatenar estos valores con un código más abreviado y óptimo?

Muchísimas gracias de antemano, espero haberme explicado bien. Gracias.
  #2 (permalink)  
Antiguo 17/09/2012, 09:47
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: ¿Cómo se pueden concatenar todos los valores de los campos de una tabla en

solo elimina la parte de :
Código:
return @devolucion2
ya que el codigo de retorno solo se debe utilizar para devolver el estatus del proceso..
Devolver datos mediante un código de retorno

Para obtener el valor de salida (OUTPUT) de tus variables seria asi:
Devolver datos mediante parámetros OUTPUT

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 17/09/2012, 10:17
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: ¿Cómo se pueden concatenar todos los valores de los campos de una tabla en

para poner tu codigo mas sencillo puedes usar coalesce (busca en google informacion sobre esto)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: concatenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.