Oracle で文字列や数値・日付のリストを行に変換する方法
Oracle データベースには、拡張されたデータ型というものが存在します。この拡張された方を利用すると、SQL で書いた複数の値を行に変換してくれるスグレモノです。
下記 URL がドキュメントですが、若干わかりにくいので使い方を見ていきましょう。
Database Data Cartridge Developer's Guide
ここで掲載している SQL は全て Oracle 10g データベースで動作確認をしました。
文字列のリストを行に変換する例
SELECT * FROM table(SYS.odcivarchar2list('aaa','bbb','ccc'));
------------
COLUMN_VALUE
------------
aaa
bbb
ccc
------------
数値のリストを行に変換する例
SELECT * FROM table(SYS.odcinumberlist(1,2,3,4,5,100));
------------
COLUMN_VALUE
------------
1
2
3
4
5
100
------------
6 rows selected.
数値のリストを行に変換し、行番号も付けて表示する例
SELECT rownum, column_value FROM table(SYS.odcinumberlist(1,2,3,4,5,100));
---------- ------------
ROWNUM COLUMN_VALUE
---------- ------------
1 1
2 2
3 3
4 4
5 5
6 100
---------- ------------
6 rows selected.
日付のリストを行に変換し、行番号も付けて表示する例
SELECT rownum, column_value FROM table(SYS.odcidatelist(date '2018-01-01', date '2017-12-11'));
---------- -------------------
ROWNUM COLUMN_VALUE
---------- -------------------
1 01/01/2018 00:00:00
2 12/11/2017 00:00:00
---------- -------------------
