📜  PostgreSQL – NULLIF()函数

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

PostgreSQL – NULLIF()函数

PostgreSQL 有一个 NULLIF函数来处理空值。 NULLIF函数是PostgreSQL提供了最常见的条件表达式之一。

Syntax:NULLIF(argument_1,argument_2);

如果ARGUMENT_1等于ARGUMENT_2 NULLIF函数返回一个空值,否则返回ARGUMENT_1。

例子 :

首先,我们创建一个名为posts 的,如下所示:

CREATE TABLE posts (
  id serial primary key,
    title VARCHAR (255) NOT NULL,
    excerpt VARCHAR (150),
    body TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP
);

现在我们向表中插入一些示例数据,如下所示:



INSERT INTO posts (title, excerpt, body)
VALUES
      ('test post 1','test post excerpt 1','test post body 1'),
      ('test post 2','','test post body 2'),
      ('test post 3', null ,'test post body 3');

我们的目标是显示帖子概览页面,页面显示每个帖子的标题和摘录。如果未提供摘录,我们将使用帖子正文的前 40 个字符。我们可以简单地使用以下查询来获取帖子中的所有行

SELECT
    ID,
    title,
    excerpt
FROM
    posts;

这导致以下情况:

无效

摘录列中空值。为了替换这个空值,我们可以使用COALESCE函数,如下所示:

SELECT
    id,
    title,
    COALESCE (excerpt, LEFT(body, 40))
FROM
    posts;

这将导致以下结果:

不幸的是,在摘录列中混合了空值和 ”(空)。这就是我们需要使用NULLIF函数:

SELECT
    id,
    title,
    COALESCE (
        NULLIF (excerpt, ''),
        LEFT (body, 40)
    )
FROM
    posts;

输出:

无效