oracleでカンマ区切りの文字列を複数行に展開する(横持ち→縦持ち)
複数行を1セルに突っ込む、ListAgg関数があるので、
その逆はあるのかなと探してみたものの、どうも見当たらなかったので、再帰with句で頑張りました。
ひょっとしたらもっといい方法があるかも?
●SQL
select distinct dat from (
WITH CTE AS (SELECT 'Azz,B,cbb,23,5d,f' temp FROM DUAL)
SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)) as dat
FROM CTE
CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+')
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
)
●実行結果
Azz
5d
B
cbb
23
f
縦持ちに出来ました。
コメント