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
 

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

Preguntas similares