Convertir cadena de Texto en una fila SQL ordenada

Cadena de Texto en una fila SQL ordenada

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_SUBSTRcon 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_SUBSTRcon 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.
SELECTREGEXP_SUBSTR(‘Enrique,Carlos,Monica’, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) VALOR
    FROM DUAL
  CONNECT BY REGEXP_SUBSTR(‘Enrique,Carlos,Monica’, ‘[^’ || ‘,’ || ‘]+’, 1, LEVEL) IS NOT NULL;

Output:

Deja un comentario