ここではORACEデータベースの変換関数をまとめて紹介しています。
CAST関数
CAST関数を使うことで、指定した値を、任意の型に変換することが出来ます。
CAST(値 AS 変換する型名)
実行結果は次のようになります。
SELECT CAST(12345 AS VARCHAR2(5)) FROM dual;
CAST(12345 AS VARCHAR2(5))
--------------------------
12345
SELECT CAST(123456789 AS VARCHAR2(5)) FROM dual;
CAST(123456789 AS VARCHAR2(5))
------------------------------
12345
SELECT CAST('19/09/09′ AS DATE) FROM dual;
CAST('19/09/09′ AS DATE)
------------------------
2019-09-09 00:00:00.000
COALESCE関数
COALESCE関数を使うことで、指定した列・式の値のうち、NULLでない初めの値を返します。
COALESCE(列名1[,列名2・・・])
実行結果は次のようになります。
SELECT COALESCE(NULL,1,NULL,2,3),COALESCE(2,3) FROM dual;
COALESCE(NULL,1,NULL,2,3)
-------------------------
1
SELECT COALESCE(2,3) FROM dual;
COALESCE(2,3)
--------------
2
SELECT COALESCE(NULL,NULL) FROM dual;
COALESCE(NULL,NULL)
-------------------
NULL
DECODE関数
DECODE関数を使うことで、条件分岐させて値を変換することが出来ます。
DECODE関数は、列の値によって条件分岐させて値を変換することが出来ます。
DECODE関数の基本文法は次の通りです。
列の値が、検索値1に一致するとき結果1を返します。検索値1に一致せず検索値2に一致する場合は結果2を返します、どの値にも一致しなかった場合は結果3を返します。
DECODE(列名,検索値1,結果1,検索値2,結果2, 結果3)
DECODE関数についてはサンプルがたくさんあるので↓のページでまとめて紹介しています。参考にしてください。
>>【ORACLE】DECODE関数の書き方:サンプル多数あり
NULLIF関数
NULLIF関数を使うことで、指定した2つの列・式の値が等しい場合にNULL値を返します。
指定した2つの値が等しくない場合は、1つ目に指定した値を返します。
NULLIF(列名1,列名2)
実行結果は次のようになります。
SELECT NULLIF(1,1),NULLIF(1,2) FROM dual;
NULLIF(1,1) NULLIF(1,2)
--------------------------
NULL 1
NVL関数
NVL関数を使うことで、NULL値を変換することが出来ます。
指定した列の値がNULLではない場合は、そのまま列の値が返されます。
NVL(列名,NULL値を変換する値)
実行結果は次のようになります。
SELECT col1,NVL(col1,0) FROM tab1;
col1 NVL(col1,0)
-------------------
test test
NULL 0
TO_CHAR関数
TO_CHAR関数を使うことで、指定した値(数値または日付)を、文字列型に変換することが出来ます。
--数値→文字列への変換
TO_CHAR(値)
--日付→文字列への変換
TO_CHAR(値[,日付のフォーマット])
実行結果は次のようになります。
SELECT TO_CHAR(12345) FROM dual;
TO_CHAR(12345)
--------------
12345
SELECT TO_CHAR(col1,'YYYY/MM/DD') FROM dual;
TO_CHAR(col1,'YYYY/MM/DD')
---------------------------
2019/09/09
SELECT TO_CHAR(col1,'YYYYMMDD') FROM dual;
TO_CHAR(col1,'YYYYMMDD')
---------------------------
20190909
SELECT TO_CHAR(col1,'YYYY/MM/DD HH24:MI:SS') FROM dual;
TO_CHAR(col1,'YYYY/MM/DD HH24:MI:SS')
--------------------------------------
2019/09/09 11:00:00
TO_DATE関数
TO_DATE関数を使うことで、文字列を日付型に変換することが出来ます。
--文字列→日付への変換
TO_DATE(文字列)
--フォーマットの指定
TO_DATE(文字列[,日付のフォーマット])
実行結果は次のようになります。
SELECT col1,TO_DATE(col1,'YYYY/MM/DD') FROM dual;
col1 TO_DATE(col1,'YYYY/MM/DD')
-----------------------------------
20191001 2019/10/01
SELECT col1,TO_DATE(col1,'YYYY/MM/DD HH24:MI:SS') FROM dual;
col1 TO_DATE(col1,'YYYY/MM/DD HH24:MI:SS')
-----------------------------------------------------
20191001101010 2019/10/01 10:10:10
TO_NUMBER関数
TO_NUMBER関数を使うことで、文字列を数値型に変換することが出来ます。
--文字列→数値への変換
TO_NUMBER(文字列)
--フォーマットの指定
TO_NUMBER(文字列[,数値のフォーマット])
実行結果は次のようになります。
SELECT col1,TO_NUMBER(col1) FROM dual;
col1 TO_NUMBER(col1)
-----------------------
12345 12345
-123 -123
SELECT col1,TO_NUMBER(col1,'999.9') FROM dual;
col1 TO_NUMBER(col1,'999.9')
-------------------------------
1234.5 1234.5