Oracle で文字列や数値・日付のリストを行に変換する方法

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
---------- -------------------