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