度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle中COALESCE()函数介绍 [打印本页]

作者: 万望    时间: 2020-4-2 23:46
标题: oracle中COALESCE()函数介绍
本帖最后由 万望 于 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.

  1. SELECT product_id, list_price, min_price,
  2.        COALESCE(0.9*list_price, min_price, 5) "Sale"
  3.   FROM product_information
  4.   WHERE supplier_id = 102050
  5.   ORDER BY product_id;
复制代码
结果:

作者: 万望    时间: 2020-4-2 23:48
洗洗睡了
作者: 张军勇    时间: 2020-4-3 09:37
这个函数还有点意思。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2