PostgreSQL – COALESCE
在 PostgreSQL 中, COALESCE函数返回第一个非空参数。它通常与 SELECT 语句一起使用以有效处理空值。
Syntax: COALESCE (argument_1, argument_2, …);
COALESCE函数接受无限数量的参数。它返回第一个不为空的参数。如果所有参数都为 null,则 COALESCE函数将返回 null。 COALESCE函数从左到右计算参数,直到找到第一个非空参数。不评估第一个非空参数中的所有剩余参数。
例子:
出于演示的目的,让我们首先使用以下语句创建一个表(例如items
):
CREATE TABLE items (
ID serial PRIMARY KEY,
product VARCHAR (100) NOT NULL,
price NUMERIC NOT NULL,
discount NUMERIC
);
items
表中有四个字段:
- id:标识items表中item的主键。
- 产品:产品名称。
- 价格:产品的价格。
- 折扣:产品的折扣。
现在我们使用 INSERT 语句将一些记录插入到items
表中,如下所示:
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 的净价为 null,这似乎不正确。问题是产品D的折扣为null,所以当我们取null值计算净价时,PostgreSQL返回null。获得正确的价格,我们需要假设如果折扣为空,则为零。然后我们可以使用 COALESCE函数如下:
SELECT
product,
(price - COALESCE(discount, 0)) AS net_price
FROM
items;
输出: