with t as (select ‘1,2,3,10,11,12‘ a from dual) select substr(a, decode(level - 1, 0, 0, instr(a, ‘,‘, 1, level - 1)) + 1, (decode(level, regexp_count(a, ‘,‘) + 1, length(a) + 1, instr(a, ‘,‘, 1, level))) - (decode(level - 1, 0, 0, instr(a, ‘,‘, 1, level - 1)) + 1)) from t connect by level <= regexp_count(a, ‘,‘) + 1;
原文:http://www.cnblogs.com/wolil/p/6834933.html