Строка в таблицу средствами Oracle
10.03.2020

Иногда возникает необходимость преобразовать строку с разделителем в набор строк.

 

Код на PLSQL с применением средств APEX (разделитель двоеточие):

DECLARE
  v_str VARCHAR2(4000) := 'A:B:C';
  t_vals wwv_flow_global.vc_arr2;
BEGIN
  t_vals := apex_util.string_to_table(p_string => v_str, p_separator => ':');
  FOR i IN 1 .. t_vals.count LOOP
    dbms_output.put_line(t_vals(i));
  END LOOP;
END;

 

Код на чистом SQL (разделитель запятая):

SELECT regexp_substr(txt, '[^,]+', 1, LEVEL) val
  FROM (SELECT '1111,2222,3333,4444' AS txt FROM dual)
 CONNECT BY regexp_substr(txt, '[^,]+', 1, LEVEL) IS NOT NULL

 

Код на чистом SQL (разделитель перенос строки, годится при копировании из Excel):

SELECT regexp_substr(txt, '[^'||CHR(10)||']+', 1, LEVEL) AS val
  FROM (SELECT '
1111
2222
4444
' AS txt FROM dual)
 CONNECT BY regexp_substr(txt, '[^'||CHR(10)||']+', 1, LEVEL) IS NOT NULL
release 1.0