COALESCE
函数返回参数列表中第一个非空表达式,必须指定最少两个参数。
语法
COALESCE(expr1, expr2[,…, exprn])
参数
参数 | 说明 |
---|---|
expr1, expr2[,…, exprn] | 非空表达式,且最少 2 个。 |
返回类型
返回参数列表中第一个非空表达式,如果所有的参数都是NULL
,则返回NULL
。
示例
假设有一张表product_information,product_id为商品 ID,list_price为该商品原价,min_price为商品最低价,Sale为商品实际售价。设置商品折扣为 9 折,计算各商品的实际售价。此时可使用COALESCE
函数,若list_price为空,就按最低价min_price计算;若min_price也为空,则按5计算。
您可以执行以下语句,建立product_information数据表,并插入数据:
CREATE TABLE product_information(supplier_id INT, product_id INT,list_price numeric, min_price numeric);INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1659', '45', NULL);INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1770', NULL, '70');INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2370', '305', '247');INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2380', '750', '731');INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '3255', NULL, NULL);
执行以下查询语句:
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 |+--------------+--------------+------------+--------+| 1659 | 45 | | 40.5 |+--------------+--------------+------------+--------+| 1770 | | 70 | 70 |+--------------+--------------+------------+--------+| 2370 | 305 | 247 | 274.5 |+--------------+--------------+------------+--------+| 2380 | 750 | 731 | 675 |+--------------+--------------+------------+--------+| 3255 | | | 5 |+--------------+--------------+------------+--------+