MySQL IS NULL

摘要:在本教程中,您将学习如何使用 MySQL IS NULL运算符来测试值是否为NULL

MySQL IS NULL 运算符简介

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

value IS NULLCode language: SQL (Structured Query Language) (sql)

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

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

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

请参见以下示例:

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1Code language: SQL (Structured Query Language) (sql)

要检查值是否不为NULL ,请使用IS NOT NULL运算符:

value IS NOT NULLCode 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; -- 0Code 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)
MySQL IS NULL Operator example

此示例使用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 NOT NULL Operator example

MySQL IS NULL – 专门功能

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

1) 日期‘0000-00-00’的处理

1) 如果DATEDATETIME列具有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)
MySQL IS NULL 具有特殊日期值

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)
MySQL IS NULL sql_auto_is_null example

概括

  • 使用IS NULL运算符来测试值是否为NULL 。如果值为NULLIS NULL运算符将返回 1。
  • 如果值不为IS NOT NULL NULL返回 1。
本教程有帮助吗?