contenido de campo separado con comas

15/07/2003 - 18:58 por Isabel Correa | Informe spam
hola Grupo

tengo una tabla de la siguiente forma:
codigo ac
23,1,2 77
23,2,5 80
23,6,12 60

necesito que la tabla quede de la siguiente forma:

cod1 cod2 cod3 ac
23 1 2 77
23 2 5 80
23 6 12 60

o sea que la informacion separada por comas de la fila
codigo se convierta cada una en una columna.

muchas gracias

Preguntas similare

Leer las respuestas

#1 Javier Loria\(MVP\)
15/07/2003 - 19:48 | Informe spam
Hola Isabel:
Antes de escribir el codigo final, vamos por partes para ver si se
explica un poco el codigo:
/* Funciones Basicas de Texto*/
DECLARE @Texto VARCHAR(20)
SET @Texto='23,1,2'

SELECT CHARINDEX(',',@Texto,0) AS PosicionPrimeraComa,
CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1) AS
PosicionSegundaComa,
LEN(@Texto) AS LargoTotal,
CHARINDEX(',',@Texto,0)-1 AS LargoPrimera,
CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)-
CHARINDEX(',',@Texto,0)-1 AS LargoSegunda,
LEN(@Texto)-CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)
/* Fin Funciones Basicas de Texto*/

Estas primeras funciones son solo para ver como funcionaria el codigo de SQL
para buscar y encontrar las comas, los largos de los texto, etc. Usando
estas funciones "Basicas" puedes PARSEAR el texto diviendolo en varios
bloques:
/* Parseo de Texto*/
SELECT SUBSTRING(@Texto,1,CHARINDEX(',',@Texto,0)-1) AS Primera,
SUBSTRING(@Texto,CHARINDEX(',',@Texto,0)+1,

CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)-
CHARINDEX(',',@Texto,0)-1) AS Segunda,
SUBSTRING(@Texto,
CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)+1,

LEN(@Texto)-CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)) AS Tercera

/* Fin de Parseo de Texto*/

Basado en este select reemplazas @Texto por tu columna codigo y agregas el
FROM y deberia darte el resultado deseado.
Espero te sirva,



Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



hola Grupo

tengo una tabla de la siguiente forma:
codigo ac
23,1,2 77
23,2,5 80
23,6,12 60

necesito que la tabla quede de la siguiente forma:

cod1 cod2 cod3 ac
23 1 2 77
23 2 5 80
23 6 12 60

o sea que la informacion separada por comas de la fila
codigo se convierta cada una en una columna.

muchas gracias
Respuesta Responder a este mensaje
#2 Fernando España
15/07/2003 - 19:50 | Informe spam
Puedes usar un patindex con substring en una sentencia para extraer los
datos a partir de un select e insertarlos en tu otra tabla


"Isabel Correa" wrote in message
news:0ce301c34af2$4ecaa3f0$
hola Grupo

tengo una tabla de la siguiente forma:
codigo ac
23,1,2 77
23,2,5 80
23,6,12 60

necesito que la tabla quede de la siguiente forma:

cod1 cod2 cod3 ac
23 1 2 77
23 2 5 80
23 6 12 60

o sea que la informacion separada por comas de la fila
codigo se convierta cada una en una columna.

muchas gracias
Respuesta Responder a este mensaje
#3 Javier Loria\(MVP\)
15/07/2003 - 22:41 | Informe spam
Me alegro mucho,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
muchas gracias. fue de gran ayuda.

Hola Isabel:
Antes de escribir el codigo final, vamos por partes para ver si se
explica un poco el codigo:
/* Funciones Basicas de Texto*/
DECLARE @Texto VARCHAR(20)
SET @Texto='23,1,2'

SELECT CHARINDEX(',',@Texto,0) AS PosicionPrimeraComa,
CHARINDEX(',',@Texto,CHARINDEX (',',@Texto,0)+1) AS
PosicionSegundaComa,
LEN(@Texto) AS LargoTotal,
CHARINDEX(',',@Texto,0)-1 AS LargoPrimera,
CHARINDEX(',',@Texto,CHARINDEX (',',@Texto,0)+1)-
CHARINDEX(',',@Texto,0)-1 AS LargoSegunda,
LEN(@Texto)-CHARINDEX
(',',@Texto,CHARINDEX(',',@Texto,0)+1) /* Fin Funciones Basicas de
Texto*/

Estas primeras funciones son solo para ver como funcionaria el
codigo de SQL para buscar y encontrar las comas, los largos de los
texto, etc. Usando estas funciones "Basicas" puedes PARSEAR el texto
diviendolo en varios bloques:
/* Parseo de Texto*/
SELECT SUBSTRING(@Texto,1,CHARINDEX(',',@Texto,0)-1) AS Primera,
SUBSTRING(@Texto,CHARINDEX(',',@Texto,0) +1,

CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)-
CHARINDEX (',',@Texto,0)-1) AS
Segunda, SUBSTRING(@Texto,
CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0)+1)+1,

LEN(@Texto)-CHARINDEX(',',@Texto,CHARINDEX(',',@Texto,0) +1)) AS
Tercera

/* Fin de Parseo de Texto*/

Basado en este select reemplazas @Texto por tu columna codigo y
agregas el FROM y deberia darte el resultado deseado.
Espero te sirva,



Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



hola Grupo

tengo una tabla de la siguiente forma:
codigo ac
23,1,2 77
23,2,5 80
23,6,12 60

necesito que la tabla quede de la siguiente forma:

cod1 cod2 cod3 ac
23 1 2 77
23 2 5 80
23 6 12 60

o sea que la informacion separada por comas de la fila
codigo se convierta cada una en una columna.

muchas gracias





.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida