Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/04/2010, 19:54
Avatar de maturano
maturano
 
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Pregunta Extraer partes de cadena separada por comas. ¿Es posible?

Tengo un campo tipo LONG donde se guarda una cadena que PUEDE estar sepada por comas. Esto es, puede haber estos valores:
Código:
                    campo
--------------------------------------------
cadena 1
cadena 2, cadena 3
cadena 4, cadena 5, cadena 6, cadena 7, ...
Intento separar las dos primeras subcadenas que estén separadas por una coma, dejando como tercer cadena lo que sobre. En concreto, necesito obtener esto como resultado:
Código:
resultado 1 | resultado 2 | resultado 3
------------+-------------+--------------
cadena 1    |             |
cadena 2    | cadena 3    |
cadena 4    | cadena 5    | cadena 6, cadena 7, ...
¿Será posible?.

He intentado con SUBSTR():
Código SQL:
Ver original
  1. SELECT SUBSTR(campo, 0, INSTR(campo, ',')-1), SUBSTR(campo, INSTR(campo, ',')-1) FROM tabla;
¿Pero cómo obtendría el resultante para seguirlo cortando?, ¿qué pasa cuando no hay más de una "subcadena"?

Igual he intentado con expresiones regultares:
Código SQL:
Ver original
  1. SELECT REGEXP_SUBSTR(campo, '([[:alnum:]]| )*[^,]', 1, 1), REGEXP_SUBSTR(campo, '([[:alnum:]]| )*[^,]', 1, 2) FROM tabla;
¿Pero cómo digo para el tercer resultado "y todas las demás coincidencias"? ... o cuál sería la expresión regular para no contar las dos primeras coincidencias?

Esperaría resolver esto desde Oracle. Cualquier sugerencia es bienvenida.
__________________
I ♥ The Music!