プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

COALESCE

構文

coalesce.gifの説明が続きます。
図「coalesce.gif」の説明

用途

COALESCEは、式のリストの最初のNULLでないexprを戻します。2つ以上の式を指定する必要があります。すべてのexprがNULLと評価された場合、このファンクションはNULLを戻します。

Oracle Databaseでは、短絡評価を使用します。データベースは、NULLかどうかを判断する前にexpr値のすべてを評価するのではなく、各expr値を評価して、NULLかどうかを判断します。

すべてのexprが数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型である場合、Oracle Databaseは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。


関連項目:

暗黙的な変換の詳細は、表3-10「暗黙的な型変換のマトリックス」を参照してください。数値の優先順位の詳細は、「数値の優先順位」を参照してください。

このファンクションはNVLファンクションを一般化したファンクションです。

COALESCEは、CASE式の変形として使用できます。次に例を示します。

COALESCE(expr1, expr2)

これは、次と同じです。

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

次の例も同様です。

COALESCE(expr1, expr2, ..., exprn)

n >= 3で、次と同じです。

CASE WHEN expr1 IS NOT NULL THEN expr1 
   ELSE COALESCE (expr2, ..., exprn) END

関連項目:

「NVL」および「CASE式」を参照してください。

次の例では、サンプル表oe.product_informationを使用して、製品のクリアランス・セールを企画します。製品の表示価格から10%値引きします。表示価格がない場合は、最小価格はセール価格となります。最小価格がない場合、セール価格は5となります。

SELECT product_id, list_price, min_price,
       COALESCE(0.9*list_price, min_price, 5) "Sale"
  FROM product_information
  WHERE supplier_id = 102050
  ORDER BY product_id;

PRODUCT_ID LIST_PRICE  MIN_PRICE       Sale
---------- ---------- ---------- ----------
      1769         48                  43.2
      1770                    73         73
      2378        305        247      274.5
      2382        850        731        765
      3355                                5