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

split

Estas en el tema de split en el foro de Oracle en Foros del Web. Hola a todos!!! Tengo una duda y ya he buscado y no lo encuentro y es una funcion split, el cual a partir de una ...
  #1 (permalink)  
Antiguo 26/05/2013, 22:12
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
split

Hola a todos!!!

Tengo una duda y ya he buscado y no lo encuentro y es una funcion split, el cual a partir de una cadena separarlo por un caracter y arroje una tabla

se tiene la siguiente cadena
'SMITH,ALLEN,WARD,JONES'

me regrese lo suiguiente

SMITH
ALLEN
WARD
JONES


he buscado y he visto que para hacer eso tienen que crear una funcion o usan la siguiente query


SQL> select regexp_substr('SMITH,ALLEN,WARD,JONES','[^,]+', 1, level) from dual
connect by regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level) is not null;


Creo que debe haber una pequeña funcion que peuda hacer esto. espero me puedan ayudar, saludos
  #2 (permalink)  
Antiguo 27/05/2013, 04:10
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: split

Creo que no existe ninguna. La única alternativa, que veo es hacer unPL/SQL.

La verdad, que me pareció interesante el tema de hacer split y encontre algo parecido, para varios registros:

Cita:
SQL> with test as
(
select 1 id, 'joey,anthony,marvin' str from dual union all
select 5 id, 'tony,glenn' str from dual union all
select 8 id, 'john' str from dual
)
select id
, str
, regexp_substr (str, '[^,]+', 1, rn) split
from test
cross
join (select rownum rn
from (select max (length (regexp_replace (str, '[^,]+'))) + 1 mx
from test)
connect by level <= mx)
where regexp_substr (str, '[^,]+', 1, rn) is not null
order by id;

ID STR SPLIT
---------- ------------------- -------------------
1 joey,anthony,marvin joey
1 joey,anthony,marvin marvin
1 joey,anthony,marvin anthony
5 tony,glenn tony
5 tony,glenn glenn
8 john john
Un saludo
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es
  #3 (permalink)  
Antiguo 27/05/2013, 04:39
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: split

Otra alternativa más sencilla, aunque es para 11G:

Cita:
with t as (
select 'sad,qq,rw,q' str from dual)
select trim (column_value) str
from t, xmltable(('"' || replace(str,',', '","') || '"'))
/
Un saludo
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es

Etiquetas: funcion, query, split, sql, tabla
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 23:29.