select id,substr(t.vals,instr(t.vals, ',', 1, tv.lv) + 1,
instr(t.vals, ',', 1, tv.lv + 1) -(
instr(t.vals, ',', 1, tv.lv) + 1)
) AS name
from (select id,',' || name || ',' AS vals,
length(name || ',') - length(REPLACE(name, ',')) AS cnt
from TTTT) t join (select LEVEL lv from dual CONNECT BY LEVEL <= 100) tv
on tv.lv <= t.cnt order by 1;
instr(t.vals, ',', 1, tv.lv + 1) -(
instr(t.vals, ',', 1, tv.lv) + 1)
) AS name
from (select id,',' || name || ',' AS vals,
length(name || ',') - length(REPLACE(name, ',')) AS cnt
from TTTT) t join (select LEVEL lv from dual CONNECT BY LEVEL <= 100) tv
on tv.lv <= t.cnt order by 1;