カテゴリ:

条件式関数

NVL

expr1 が NULL の場合は、 expr2 を返します。それ以外の場合は expr1 を返します。

エイリアス:

IFNULL

構文

NVL( <expr1> , <expr2> ) 
Copy

引数

expr1

一般的な式です。

expr2

一般的な式です。

使用上の注意

  • 可能であれば、同じ型の引数を渡します。異なる型の引数を渡すことは避けます。

  • 引数の1つが数値の場合、関数は、非数値文字列引数(例: 'a string')と型 NUMBER(18,5)の定数ではない文字列引数を 強制 します。

    定数ではない数値文字列引数で、 NUMBER(18,5)が数値を表すのに十分でない場合は、値を表すことができる型に引数を キャスト します。

  • どちらの式にも UNIONINTERSECTEXCEPTMINUS などの集合演算子を含む SELECT ステートメントを含めることができます。セット演算子を使用する場合は、データ型に互換性があることを確認してください。詳細については、 演算子のセット トピックの 一般的な使用上の注意 をご参照ください。

照合順序の詳細

戻り値

戻り式のデータ型を返します。

両方の式が NULL の場合は、 NULL を返します。

サプライヤーの連絡先情報を含むテーブルを作成します。

CREATE TABLE IF NOT EXISTS suppliers ( supplier_id INT PRIMARY KEY, supplier_name VARCHAR(30), phone_region_1 VARCHAR(15), phone_region_2 VARCHAR(15)); 
Copy

このテーブルには、2つの異なるリージョンの各サプライヤーの電話番号が含まれています。電話番号は、リージョンで NULL にすることもできます。

テーブルに値を挿入します。

INSERT INTO suppliers(supplier_id, supplier_name, phone_region_1, phone_region_2) VALUES(1, 'Company_ABC', NULL, '555-01111'), (2, 'Company_DEF', '555-01222', NULL), (3, 'Company_HIJ', '555-01333', '555-01444'), (4, 'Company_KLM', NULL, NULL); 
Copy

次の SELECT ステートメントは、 NVL 関数を使用して phone_region_1phone_region_2 の値を取得します。

この例では、 NVL 関数で以下の結果を示しています。

  • IF_REGION_1_NULL 列には、 phone_region_1 の値、またはその値が NULL の場合は phone_region_2 の値が格納されます。

  • IF_REGION_2_NULL 列には、 phone_region_2 の値、またはその値が NULL の場合は phone_region_1 の値が格納されます。

  • phone_region_1phone_region_2 の両方が NULL の場合、この関数は NULL を返します。

SELECT supplier_id, supplier_name, phone_region_1, phone_region_2, NVL(phone_region_1, phone_region_2) IF_REGION_1_NULL, NVL(phone_region_2, phone_region_1) IF_REGION_2_NULL FROM suppliers ORDER BY supplier_id; 
Copy
+-------------+---------------+----------------+----------------+------------------+------------------+ | SUPPLIER_ID | SUPPLIER_NAME | PHONE_REGION_1 | PHONE_REGION_2 | IF_REGION_1_NULL | IF_REGION_2_NULL | |-------------+---------------+----------------+----------------+------------------+------------------| | 1 | Company_ABC | NULL | 555-01111 | 555-01111 | 555-01111 | | 2 | Company_DEF | 555-01222 | NULL | 555-01222 | 555-01222 | | 3 | Company_HIJ | 555-01333 | 555-01444 | 555-01333 | 555-01444 | | 4 | Company_KLM | NULL | NULL | NULL | NULL | +-------------+---------------+----------------+----------------+------------------+------------------+