📜  PostgreSQL – COALESCE

📅  最后修改于: 2022-05-13 01:57:16.028000             🧑  作者: Mango

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;

输出: