摘要:在本教程中,您将学习如何使用 MySQL IS NULL
运算符来测试值是否为NULL
。
MySQL IS NULL 运算符简介
要测试值是否为NULL
,可以使用IS NULL
运算符。以下是IS NULL
运算符的基本语法:
value IS NULL
Code language: SQL (Structured Query Language) (sql)
如果值为NULL
,则表达式返回 true。否则,返回 false。
请注意,MySQL 没有内置的BOOLEAN
类型。它使用TINYINT(1)
来表示BOOLEAN
值,即 true 表示 1,false 表示 0。
因为IS NULL
是一个比较运算符,所以您可以在任何可以使用运算符的地方使用它,例如在SELECT
或WHERE
子句中。
请参见以下示例:
SELECT 1 IS NULL, -- 0
0 IS NULL, -- 0
NULL IS NULL; -- 1
Code language: SQL (Structured Query Language) (sql)
要检查值是否不为NULL
,请使用IS NOT NULL
运算符:
value IS NOT NULL
Code language: SQL (Structured Query Language) (sql)
如果值不为NULL
,则此表达式返回 true (1)。否则,返回假 (0)。
考虑以下示例:
SELECT 1 IS NOT NULL, -- 1
0 IS NOT NULL, -- 1
NULL IS NOT NULL; -- 0
Code language: SQL (Structured Query Language) (sql)
MySQL IS NULL 示例
我们将使用示例数据库中的customers
表进行演示。

以下查询使用IS NULL
运算符查找没有销售代表的客户:
SELECT
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NULL
ORDER BY
customerName;
Code language: SQL (Structured Query Language) (sql)

此示例使用IS NOT NULL
运算符来获取拥有销售代表的客户:
SELECT
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NOT NULL
ORDER BY
customerName;
Code language: SQL (Structured Query Language) (sql)

MySQL IS NULL – 专门功能
为了与ODBC程序兼容,MySQL支持IS NULL
运算符的一些特殊功能。
1) 日期‘0000-00-00’的处理
1) 如果DATE
或DATETIME
列具有NOT NULL
约束并包含特殊日期'0000-00-00'
,则可以使用IS NULL
运算符来查找此类行。
首先,创建一个名为projects
的表:
CREATE TABLE IF NOT EXISTS projects (
id INT AUTO_INCREMENT,
title VARCHAR(255),
begin_date DATE NOT NULL,
complete_date DATE NOT NULL,
PRIMARY KEY(id)
);
Code language: SQL (Structured Query Language) (sql)
其次,将一些行插入projects
表中:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('New CRM','2020-01-01','0000-00-00'),
('ERP Future','2020-01-01','0000-00-00'),
('VR','2020-01-01','2030-01-01');
Code language: SQL (Structured Query Language) (sql)
第三,使用IS NULL
运算符选择complete_date
列中值为'0000-00-00'
的行。
SELECT *
FROM projects
WHERE complete_date IS NULL;
Code language: SQL (Structured Query Language) (sql)

2) @@sql_auto_is_null
变量的影响
如果变量@@sql_auto_is_null
设置为1,则可以在执行INSERT
语句后使用IS NULL
运算符获取auto_increment列的值。
请注意,默认情况下变量@@sql_auto_is_null
为 0。请考虑以下示例。
首先,将变量@@sql_auto_is_null
设置为 1。
SET @@sql_auto_is_null = 1;
Code language: SQL (Structured Query Language) (sql)
其次,在projects
表中插入一个新行:
INSERT INTO projects(title,begin_date, complete_date)
VALUES('MRP III','2010-01-01','2020-12-31');
Code language: SQL (Structured Query Language) (sql)
第三,使用IS NULL
运算符获取id
列的生成值:
SELECT
id
FROM
projects
WHERE
id IS NULL;
Code language: SQL (Structured Query Language) (sql)

概括
- 使用
IS NULL
运算符来测试值是否为NULL
。如果值为NULL
,IS NULL
运算符将返回 1。 - 如果值不为
IS NOT NULL
NULL
返回 1。