提要:在本教程中,您将学习返回第一个非null参数的PostgreSQL COALESCE函数。 您将学习如何在SELECT语句中应用此函数来有效地处理空值。

PostgreSQL COALESCE 函数的语法

COALESCE (argument_1, argument_2, );

COALESCE 函数接收不限个数的参数。它返回从左到右,第一个非 NULL 的参数,如果所有参数都是 NULL,那么它也返回 NULL

COALESCE 函数提供了和 SQL 标准的 NVLIFNULL 函数相同的功能。

举例:

SELECT
 COALESCE (1, 2); --结果是 1
SELECT
 COALESCE (NULL, 2 , 1); --结果是 2

我们经常用它来替换查询中的空值。

PostgreSQL COALESCE 函数的示例

首先,创建一个 items 表:

CREATE TABLE items (
 ID serial PRIMARY KEY,
 product VARCHAR (100) NOT NULL,
 price NUMERIC NOT NULL,
 discount NUMERIC
);

然后,往这张表里插入一些数据:

INSERT INTO items (product, price, discount)
VALUES
 ('A', 1000 ,10),
 ('B', 1500 ,20),
 ('C', 800 ,5),
 ('D', 500, NULL);

第三步,查询商品的净价格:

SELECT
 product,
 (price - discount) AS net_price
FROM
 items;

由于 D 商品的 discountNULL, 所以 (price - discount) AS net_price 的结果也是 NULL

要获得正确的净价格,需要将 NULL 值替换为0:

SELECT
 product,
 (price - COALESCE(discount,0)) AS net_price
FROM
 items;
下一篇:PostgreSQL 的NULLIF