oracle--函数COALESCE

COALESCE

语法

COALESCE(expr1, expr2...exprn)

解释

COALESCE返回参数列表中第一个非空表达式。必须指定最少两个参数。如果所有的参数都是null,则返回null。

Oracle使用短路运算,它依次对每个表达式求值判断它是否为空,而不是对所有表达式都求值后在判断第一个非空值。

COALESCE函数是NVL函数的一个扩展。

可以使用COALESCE函数替换一个类ASE语句,例:

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

例子

下面的例子给所有的产品按list_price打9折,如果没有list_price,就按最低价MIN_PRICE算。 如果也没有MIN_PRICE,那么sale就是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

你可能感兴趣的:(oracle)