NVL
構文
目的
NVL
を使用すると、NULL(空白として戻される)を文字列に置換して問合せの結果に含めることができます。expr1
がnullの場合、NVL
はexpr2
を返します。expr1
がnullでない場合、NVL
はexpr1
を返します。
引数expr1
およびexpr2
は任意のデータ型にすることができます。2つの引数のデータ型が異なる場合、一方のデータ型が他方のデータ型に暗黙的に変換されます。暗黙的に変換できない場合、データベースはエラーを戻します。暗黙的な変換は、次のように実行されます。
-
expr1
が文字データの場合、Oracle Databaseは2つの引数を比較する前にexpr2
をexpr1
のデータ型に変換し、expr1
の文字セットでVARCHAR2
を戻します。 -
expr1
が数値である場合、Oracle Databaseは数値の優先順位が最も高い引数を判断し、その引数のデータ型に他方の引数を暗黙的に変換して、そのデータ型を戻します。
関連項目:
-
暗黙的な変換の詳細は、表2-9を参照してください。数値の優先順位の詳細は、「数値の優先順位の詳細」を参照してください
-
「COALESCE」および「CASE式」を参照してください。これらは、
NVL
と同様の機能を提供します。 -
NVL
の戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、従業員の名前と歩合のリストを戻し、従業員が歩合を受け取らない場合には「Not Applicable」を表示します。
SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable') commission FROM employees WHERE last_name LIKE 'B%' ORDER BY last_name; LAST_NAME COMMISSION ------------------------- ---------------------------------------- Baer Not Applicable Baida Not Applicable Banda .1 Bates .15 Bell Not Applicable Bernstein .25 Bissot Not Applicable Bloom .2 Bull Not Applicable