カテゴリ:

条件式関数

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             |
+-------------+---------------+----------------+----------------+------------------+------------------+