MySQL IS NULL

时间:2019-11-20 08:52:04  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用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。