MySQL 如何在表中查找空数据



场景:我有一个包含重复数据的表。此表的一列是 ddate,如果它是空/空的,我想选择该行(并将其删除(。但是由于某种原因,我无法通过直接查询找到空行。

问题:运行以下查询 (1( 时:

select
    `ddate`, 
    count(1) as `nb`
from instrument_nt
group by `ddate`;

我得到了 ddate 为 NULL 且具有其他值的行数。但是当我运行查询 (2( 时:

select count(*) from instrument_nt where `ddate` =  Null;

select * from instrument_nt where `ddate` =  NULL;

我的查询结果为 0 或空。

问:这两个查询(1 和 2(之间有什么区别?如何正确删除具有空/缺失日期的数据?

NULL的意思是不知道它是一个值。

如果你想得到NULL行,你需要使用IS NULL而不是eqaul NULL

select count(*) from instrument_nt where `ddate` IS  Null;

这两个查询(1 和 2(之间有什么区别?如何正确删除具有空/缺失日期的数据?

(1(

select count(*) from instrument_nt where `ddate` IS  Null;

您将从instrument_nt表中获得ddate NULL的金额。

(二(

select * from instrument_nt where `ddate` IS NULL;

您将获得一个ddate为 NULL 的结果集;

每个null都被定义为与其他null不同。因此,对null的平等总是false的。例如,请参阅此处,它描述了这种所谓的"三值问题"。

对于这第三类值,您希望使用 IS ,如 IS NULLIS NOT NULL

使用关键字 IS NULL 检查表中的空值

例如:

select * from instrument_nt where `ddate` IS NULL;

MySQL 空检查使用 IS 运算符而不是 =

您的查询应如下所示:select * from instrument_nt where日期IS NULL;

相关内容

  • 没有找到相关文章

最新更新