The Essential Guide To MySQL ISNULL Function

摘要:本教程向您介绍 MySQL ISNULL 函数以及如何使用它来处理 NULL 值。

MySQL ISNULL函数简介

ISNULL函数接受一个参数并测试该参数是否为NULL 。如果参数为NULLISNULL函数返回 1,否则返回 0。

下面说明了ISNULL函数的语法:

ISNULL(expr)
Code language: SQL (Structured Query Language) (sql)

考虑以下示例:

SELECT ISNULL(NULL); -- 1    
SELECT ISNULL(1);  -- 0
SELECT ISNULL(1 + NULL); -- 1;
SELECT ISNULL(1 / 0 ); -- 1;
Code language: SQL (Structured Query Language) (sql)
请注意,如果您试图找到 Microsoft SQL Server 的ISNULL函数的 MySQL 替代方案,则应该使用 MySQL 的IFNULL函数。因为MySQL的ISNULL函数不同于Microsoft SQL Server的ISNULL函数。

MySQL ISNULL 函数和 IS NULL 运算符

ISNULL函数与IS NULL运算符共享一些行为。例如,如果您有一个声明为NOT NULL DATE列,则可以使用以下语句查找特殊日期'0000-00-00'

SELECT 
    *
FROM
    table_name
WHERE
    ISNULL(date);
Code language: SQL (Structured Query Language) (sql)

请注意,MySQL 特意实现此功能以支持 ODBC 应用程序,因为 ODBC 不支持特殊日期值'0000-00-00'

让我们看一个例子。

首先,创建一个名为special_isnull新表,如下所示:

CREATE TABLE special_isnull (
    start_date DATE NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

其次,将一些数据插入special_isnull表中:

INSERT INTO special_isnull(start_date) 
VALUES('2000-01-01'),
      ('0000-00-00');
Code language: SQL (Structured Query Language) (sql)

第三,使用ISNULL函数从special_isnull表中查询数据:

SELECT 
    *
FROM
    special_isnull
WHERE
    ISNULL(start_date); 
Code language: SQL (Structured Query Language) (sql)
MySQL ISNULL function example

该查询返回一行,而您可能期望它将返回一个空结果集。

当您想要否定IS NULL运算符时,可以使用NOT运算符,即IS NOT NULL 。但是,对于ISNULL函数,您可以使用!ISNULL

在本教程中,您学习了如何使用 MySQL ISNULL 函数及其特殊行为来处理NULL值。

本教程有帮助吗?