その他単一行関数

ORACLEのその他単一行関数のリファレンスです。

※当ページにおいて、検索結果イメージの半角スペースは【_】、NULLは【NULL】と表現しています。

スポンサーリンク

COALESCE

文法
COALESCE(引数1,引数2,…)

戻り値
引数1と同じ型

説明
指定された引数の最初のNULLでない値を戻す
全ての引数がNULLの場合、NULLを戻す

SELECT a
      ,b
      ,c
      ,COALESCE(a,b,c) func
FROM   test_table
;

A     B     C     FUNC
----- ----- ----- -----
ABC   DEF   GHI   ABC
NULL  DEF   GHI   DEF
NULL  NULL  GHI   GHI
NULL  NULL  NULL  NULL
スポンサーリンク

DECODE

文法
DECODE(引数1,引数2,引数3,…)

戻り値
引数3と同じ型

説明
引数1と引数2を比較し一致した場合、引数3を戻す
一致しない場合、引数1と引数4を比較し一致した場合、引数5を戻す
一致しない場合、引数1と引数6を比較し一致した場合、引数7を戻す
以下同様

全て一致しない場合、末尾の引数が偶数番の場合は、末尾の引数の値を戻す
奇数番の場合は、NULLを戻す

引数は最大255個まで指定可能

SELECT a
      ,DECODE(a,'ABC',1,'DEF',2) func1
      ,DECODE(a,'ABC',1,'DEF',2,3) func2
FROM   test_table
;

A     FUNC1 FUNC2
----- ----- -----
ABC       1     1
DEF       2     2
GHI    NULL     3

備考
NULLの比較も可能

SELECT a
      ,DECODE(a,NULL,1,2) func
FROM   test_table
;

A      FUNC
----- -----
ABC       2
NULL      1

GREATEST

文法
GREATEST(引数1,…)

戻り値
引数1と同じ型

説明
指定した引数の中で、最大の値を戻す
引数は最大255個まで指定可能

SELECT a
      ,b
      ,c
      ,GREATEST(a,b,c) func
FROM   test_table
;

    A     B     C  FUNC
----- ----- ----- -----
    1     2     3     3

備考
引数の中にNULLが存在する場合、NULLを戻す

SSELECT a
      ,b
      ,c
      ,GREATEST(a,b,c) func
FROM   test_table
;

    A     B     C  FUNC
----- ----- ----- -----
    1  NULL     3  NULL

LEAST

文法
LEAST(引数1,…)

戻り値
引数1と同じ型

説明
指定した引数の中で、最小の値を戻す
引数は最大255個まで指定可能

SELECT a
      ,b
      ,c
      ,LEAST(a,b,c) func
FROM   test_table
;

    A     B     C  FUNC
----- ----- ----- -----
    1     2     3     1

備考
引数の中にNULLが存在する場合、NULLを戻す

SELECT a
      ,b
      ,c
      ,LEAST(a,b,c) func
FROM   test_table
;

    A     B     C  FUNC
----- ----- ----- -----
    1  NULL     3  NULL

NULLIF

文法
NULLIF(引数1,引数2)

戻り値
引数1と同じ型

説明
引数1と引数2を比較し、同じ場合NULLを戻す
異なる場合は、引数1の値を戻す

SELECT a
      ,b
      ,NULLIF(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
    1     2     1
    1     1  NULL

備考
引数1と引数2の型が異なる場合エラーとなる

SELECT NULLIF('ABC',1) func
FROM   test_table
;

ORA-00932: データ型が一致しません: CHARが予想されましたがNUMBERです。

NVL

文法
NVL(引数1,引数2)

戻り値
引数1と同じ型

説明
引数1がNULL以外の場合は、引数1の値を戻す
NULLの場合は、引数2の値を戻す

SELECT a
      ,b
      ,NVL(a,b) func
FROM   test_table
;

    A     B  FUNC
----- ----- -----
    1     2     1
    3  NULL     3
 NULL     6     6

NVL2

文法
NVL2(引数1,引数2,引数3)

戻り値
引数2と同じ型

説明
引数1がNULL以外の場合は、引数2の値を戻す
NULLの場合は、引数3の値を戻す

SELECT a
      ,b
      ,c
      ,NVL2(a,b,c) func
FROM   test_table
;

    A     B     C  FUNC
----- ----- ----- -----
    1     2     3     2
 NULL     5     6     6
タイトルとURLをコピーしました