本帖最后由 万望 于 2015-11-2 23:47 编辑
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;
复制代码 结果:
|