oracle 批量列轉行 逗號分隔

示例:

with temp as
(select '1,2,3' nums, 'a' names from dual
	union all
	select '4,5' nums, 'b' names from dual
	union all
	select '6,7' nums, 'c' names from dual
	union all
	select '8' nums, 'c' names from dual
	union all
	select '9,10' nums, 'c' names from dual
	union all
	select '11,12' nums, 'c' names from dual
	union all
	select '13,14' nums, 'c' names from dual
	union all
	select '15,16' nums, 'c' names from dual
	union all
	select '17,18' nums, 'c' names from dual
	union all
	select '19,20' nums, 'c' names from dual
	union all
	select '21,22,23,24,25,26,27,28,29,30,31,32,33,34' nums, 'c' names from dual
)
select regexp_substr(nums,'[^,]+',1,b.lv) order_num,names
from temp, (select level lv from dual connect by level<=(select max(length(regexp_replace(nums,'[^,]+'))+1) from temp)) b	--用於分配行數(行數取最大的nums分隔數)
where b.lv <=length(regexp_replace(nums,'[^,]+'))+1 order by order_num


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章