Skip to main content

全面了解MySQL是空运算符

MySQL简介是空操作符

要测试值是否为NULL,可以使用is NULL运算符。以下是IS NULL运算符的基本语法:

value IS NULL

如果该值为NULL,则表达式返回true。否则,返回false。

请注意,MySQL没有内置的布尔类型。它使用TINYINT(1)表示布尔值,即true表示1,false表示0。

因为IS NULL是一个比较运算符,所以可以在任何可以使用运算符的地方使用它,例如在SELECT或WHERE子句中。

请参见以下示例:

SELECT 1 IS NULL,  -- 0
0 IS NULL, -- 0
NULL IS NULL; -- 1

要检查值是否为非空,请使用is not NULL运算符:

value IS NOT NULL

如果值不为NULL,则此表达式返回true(1)。否则,它将返回false(0)。

考虑下面的例子:

SELECT 1 IS NOT NULL, -- 1
0 IS NOT NULL, -- 1
NULL IS NOT NULL; -- 0

MySQL是空示例

我们将使用示例数据库中的customers表进行演示。

以下查询使用IS NULL运算符查找没有销售代表的客户:

SELECT 
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NULL
ORDER BY
customerName;

MySQL IS NULL Operator example

本例使用IS NOT NULL运算符获取拥有销售代表的客户:

SELECT 
customerName,
country,
salesrepemployeenumber
FROM
customers
WHERE
salesrepemployeenumber IS NOT NULL
ORDER BY
customerName;

MySQL IS NOT NULL Operator example

MySQL是空的——专门的特性

为了与ODBC程序兼容,MySQL支持IS NULL运算符的一些特殊功能。

1) 日期“0000-00-00”的处理

1) 如果日期或日期时间列具有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)
);

其次,在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');

第三,使用IS NULL运算符选择complete_date列中的值为“0000-00-00”的行。

SELECT * 
FROM projects
WHERE complete_date IS NULL;

MySQL IS NULL with special date value

2) @sql_auto的影响为空变量

如果变量@sql\u auto\u is\u null设置为1,则在使用is null运算符执行INSERT语句后,可以获取自动增量列的值。

请注意,默认情况下,变量@sql\u auto\u是\u null是0。考虑下面的例子。

首先,将变量@sql\u auto\u is\u null设置为1。

SET @@sql_auto_is_null = 1;

其次,在projects表中插入新行:

INSERT INTO projects(title,begin_date, complete_date)
VALUES('MRP III','2010-01-01','2020-12-31');

第三,使用IS NULL运算符获取id列的生成值:

SELECT 
id
FROM
projects
WHERE
id IS NULL;

MySQL IS NULL sql_auto_is_null example

总结