Иногда возникает необходимость преобразовать строку с разделителем в набор строк.
Код на 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