COALESCE
構文
目的
COALESCE
は、式のリストの最初のNULLでないexpr
を戻します。2つ以上の式を指定する必要があります。すべてのexpr
がNULLと評価された場合、このファンクションはNULLを戻します。
Oracle Databaseでは、短絡評価を使用します。データベースは、NULL
かどうかを判断する前にexpr
値のすべてを評価するのではなく、各expr
値を評価して、NULL
かどうかを判断します。
すべてのexpr
が数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型である場合、Oracle Databaseは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。
関連項目:
-
COALESCE
の戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
このファンクションは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
例
次の例では、サンプル表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