【ORACLE】変換関数


ここでは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