1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | WITH t AS ( SELECT 'a;b;c' f1, 'd;e;f' f2, 'g;h' f3 FROM dual ) SELECT gb , REGEXP_SUBSTR(v, '[^;]+' , 1, lv) v FROM ( SELECT DECODE(lv, 1, 'F1' , 2, 'F2' , 3, 'F3' ) gb , DECODE(lv, 1, f1 , 2, f2 , 3, f3 ) v FROM t , ( SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 3) ) , ( SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9) WHERE lv <= LENGTH(v) - LENGTH( REPLACE (v, ';' )) + 1 ORDER BY gb, lv ; |