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;
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://p.delit.cn/) | Powered by Discuz! X3.2 |