九月 5, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的IS NULL
运算符,来检查值是否为 NULL。
目录
NULL 和 IS NULL 运算符简介
在数据库世界中,NULL 意味着缺少信息或不适用。NULL 不是一个值,因此,您不能将它与任何其他值(例如数字或字符串)进行比较。NULL 与值的比较将始终得到 NULL,这意味着结果未知。
此外,NULL 不等于 NULL,因此以下表达式返回 NULL:
NULL = NULL
假设您有一个contacts
表存储联系人的名字、姓氏、电子邮件和电话号码。在记录联系人时,您可能不知道联系人的电话号码。
为了解决这个问题,您可以将phone
列定义为可为空列,并在保存联系人信息时将 NULL 插入到phone
列中。
CREATE TABLE contacts(
id INT GENERATED BY DEFAULT AS IDENTITY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(15),
PRIMARY KEY (id)
);
请注意,您将在后续教程中学习如何创建新表。现在,您只需要执行上面的语句即可创建
contacts
表。
如果执行CREATE TABLE
语句时出现错误,您的 PostgreSQL 版本可能不支持标识列语法。在这种情况下,您可以使用以下语句:
CREATE TABLE contacts(
id SERIAL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
phone VARCHAR(15),
PRIMARY KEY (id)
);
以下语句插入两个联系人,一个有电话号码,另一个没有:
INSERT INTO contacts(first_name, last_name, email, phone)
VALUES ('John','Doe','john.doe@rockdata.net',NULL),
('Lily','Bush','lily.bush@rockdata.net','(408-234-2764)');
要查找没有电话号码的联系人,您可以使用以下语句:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone = NULL;
该语句不返回任何行。这是因为WHERE
子句中的表达式phone = NULL
始终返回 false。
即使电话列中存在 NULL,表达式NULL = NULL
也会返回 false。这是因为 NULL 不等于任何值,甚至它本身也不等于。
要检查值是否为 NULL,请使用IS NULL
运算符:
value IS NULL
如果值为 NULL,则表达式返回 true,否则返回 false。
因此,要获取电话列中没有存储任何电话号码的联系人,请使用以下语句:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone IS NULL;
这是输出:
IS NOT NULL 运算符
要检查值是否不为 NULL,请使用IS NOT NULL
运算符:
value IS NOT NULL
如果值不为 NULL,则表达式返回 true;如果值为 NULL,则表达式返回 false。
例如,要查找有电话号码的联系人,您可以使用以下语句:
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone IS NOT NULL;
输出是:
在本教程中,您学习了如何使用 PostgreSQL 的IS NULL
运算符,来检查值是否为 NULL。