drop table t purge
create table t as select '123,456,789' acct from dual
select distinct (instr(acct||',',',',1,level)) loc
from t
connect by level <= length(acct)- length(replace(acct,','))+1
LOC | 4 | 8 | 12 |
---|
select substr(acct,
nvl(lag(loc) over ( order by loc),0)+1,
loc-nvl(lag(loc) over ( order by loc),0)-1
) list_as_rows
from (
select distinct (instr(acct||',',',',1,level)) loc
from t
connect by level <= length(acct)-length(replace(acct,','))+1
), t
LIST_AS_ROWS | 123 | 456 | 789 |
---|