MySQL IS NULL
简介:在本教程中,您将学习如何使用MySQL IS NULL运算符测试值是否为NULL。
MySQL IS NULL运算符简介
要测试值是否为NULL,请使用IS NULL运算符。
这是IS NULL运算符的基本语法:
value IS NULL
如果值为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
要检查值是否不为NULL,请使用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 IS NULL示例
我们将使用示例数据库中的customer表进行演示。
以下查询使用IS NULL运算符查找没有销售代表的客户:
SELECT customerName, country, salesrepemployeenumber FROM customers WHERE salesrepemployeenumber IS NULL ORDER BY customerName;
本示例使用IS NOT NULL运算符获取具有销售代表的客户:
SELECT customerName, country, salesrepemployeenumber FROM customers WHERE salesrepemployeenumber IS NOT NULL ORDER BY customerName;
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) );
其次,将一些行插入到项目表中:
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;
2)@@ sql_auto_is_null变量的影响
如果变量@@ sql_auto_is_null设置为1,则可以使用IS NULL运算符在执行INSERT语句后获取auto_increment列的值。
请注意,默认情况下,变量@@ sql_auto_is_null为0。
请考虑以下示例。
首先,将变量@@ sql_auto_is_null设置为1。
SET @@sql_auto_is_null = 1;
第二,在项目表中插入新行:
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运算符测试值是否为NULL。