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;
输出: