Enlace Patrocinado
Muchas veces tenemos almacenado un valor que está separado por un carácter pero en la misma variable o campo, y deseamos pasarlo a filas separado por el carácter indicado.
Para esto podemos utilizar la función de Oracle REGEXP_SUBSTR con la ayuda de la función CONNECT BY LEVEL.
Muchas veces tenemos almacenado un valor que está separado por un carácter pero en la misma variable o campo, y deseamos pasarlo a filas separado por el carácter indicado.
Para esto podemos utilizar la función de Oracle REGEXP_SUBSTR con la ayuda de la función CONNECT BY LEVEL.
Ejemplo: Se tiene una cadena con los nombres más populares de Colombia, se desea que la cadena aparezca en forma de lista.
–Cadena
Nombres := ‘Enrique,Carlos,Monica’;
–Codigo
declare
nombres varchar2(200) := ‘Enrique,Carlos,Monica’ ;
cursor cur_cadena_a_fila is
SELECT REGEXP_SUBSTR(nombres, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) VALOR
FROM DUAL
CONNECT BY REGEXP_SUBSTR(nombres, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) IS NOT NULL;
begin
for nombres in cur_cadena_a_fila loop
dbms_output.put_line(nombres.VALOR);
end loop;
End;
Output:
Utilizando solo el select en la cadena puede ser.
SELECT REGEXP_SUBSTR(‘Enrique,Carlos,Monica’, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) VALOR
FROM DUAL
CONNECT BY REGEXP_SUBSTR(‘Enrique,Carlos,Monica’, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) IS NOT NULL;