NVL2

構文

目的

NVL2を使用すると、指定された式がNULLかどうかに基づく問合せによって戻される値を判断できます。expr1がNULLでない場合、NVL2expr2を戻します。expr1がNULLの場合、NVL2expr3を戻します。

引数expr1は、任意のデータ型を持つことができます。引数expr2およびexpr3は、LONG以外の任意のデータ型を持つことができます。

expr2expr3のデータ型が異なる場合、一方のデータ型が他方のデータ型に暗黙的に変換されます。暗黙的に変換できない場合、データベースはエラーを戻します。expr2が文字または数値データの場合、暗黙的な変換は次のように実装されます。

  • expr2が文字データの場合、Oracle Databaseは、expr3がNULLの定数ではないかぎり、値を戻す前にexpr3expr2のデータ型に変換します。その場合、データ型の変換は行われず、expr2の文字セットでVARCHAR2が戻されます。

  • expr2が数値データである場合、Oracle Databaseは数値の優先順位が最も高い引数を判断し、その引数のデータ型に他方の引数を暗黙的に変換して、そのデータ型を戻します。

関連項目:

次の例では、employeescommission_pct列がNULLかどうかによって、従業員の収入が給与と歩合か、または給与のみかを示します。

SELECT last_name, salary,
       NVL2(commission_pct, salary + (salary * commission_pct), salary) income
  FROM employees
  WHERE last_name like 'B%'
  ORDER BY last_name;

LAST_NAME                     SALARY     INCOME
------------------------- ---------- ----------
Baer                           10000      10000
Baida                           2900       2900
Banda                           6200       6820
Bates                           7300       8395
Bell                            4000       4000
Bernstein                       9500      11875
Bissot                          3300       3300
Bloom                          10000      12000
Bull                            4100       4100