COALESCE 函数返回参数列表中第一个非空表达式,必须指定最少两个参数。

语法

  1. COALESCE(expr1, expr2[,…, exprn])

参数

参数说明
expr1, expr2[,…, exprn]非空表达式,且最少 2 个。

返回类型

返回参数列表中第一个非空表达式,如果所有的参数都是 NULL,则返回 NULL

示例

假设有一张表 product_informationproduct_id 为商品 ID,list_price 为该商品原价,min_price 为商品最低价,Sale 为商品实际售价。设置商品折扣为 9 折,计算各商品的实际售价。此时可使用 COALESCE 函数,若 list_price 为空,就按最低价 min_price 计算;若 min_price 也为空,则按 5 计算。

您可以执行以下语句,建立 product_information 数据表,并插入数据:

  1. CREATE TABLE product_information(supplier_id INT, product_id INT,list_price numeric, min_price numeric);
  2. INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1659', '45', NULL);
  3. INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1770', NULL, '70');
  4. INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2370', '305', '247');
  5. INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2380', '750', '731');
  6. INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '3255', NULL, NULL);

执行以下查询语句:

  1. SELECT product_id, list_price,min_price,COALESCE(0.9*list_price, min_price, 5) "Sale"
  2. FROM product_information WHERE supplier_id = 102050 ORDER BY product_id;

查询结果如下:

  1. +--------------+--------------+------------+--------+
  2. | PRODUCT_ID | LIST_PRICE | MIN_PRICE | Sale |
  3. +--------------+--------------+------------+--------+
  4. | 1659 | 45 | | 40.5 |
  5. +--------------+--------------+------------+--------+
  6. | 1770 | | 70 | 70 |
  7. +--------------+--------------+------------+--------+
  8. | 2370 | 305 | 247 | 274.5 |
  9. +--------------+--------------+------------+--------+
  10. | 2380 | 750 | 731 | 675 |
  11. +--------------+--------------+------------+--------+
  12. | 3255 | | | 5 |
  13. +--------------+--------------+------------+--------+