3

您好我面临一个关于 sql 查询中的 NULL 条件检查的问题。

下图是关于选择表 session_testset 的行,该表具有列“sync”和 NULL 值。

它有一行 NULL 值仍然返回 0 记录。

不返回行

当我更改条件并检查“NOT NULL”时。它正在返回记录。

返回行

但这是错误的。为什么会这样?

这是我的表结构
在此处输入图像描述

4

3 回答 3

2

据我所知,如果我们使用查询SELECT * FROM table_name WHERE column_name IS NULL返回它没有值的列,这意味着未填充。您的表有一个值NULL。检查您的代码而不在列中放置 NULL 值。

于 2013-01-02T04:36:46.337 回答
2

我认为 Anaz 已经为您提供了您所需要的。 当您尝试使用 IS NULL 和 IS NOT NULL
时,列中没有值与其中具有值“NULL”不同。

我刚刚在示例数据库上尝试了一个测试查询,这些查询工作得很好:

1. SELECT * FROM sample_db WHERE name IS NULL;  //returns row where name  
column has no value
2. SELECT * FROM sample_db WHERE name IS NOT NULL;  //returns row where name  
column has values    
于 2013-01-02T04:39:53.530 回答
0
select * from session_testset where  sync is null or sync = '';

或者

select * from session_testset where ifnull(sync , '') = '';

或者

select * from session_testset where coalesce(sync , '') = '';

或者

select * from session_testset where ifnull(length(sync ), 0) = 0;
于 2013-01-02T04:44:43.400 回答