您好我面临一个关于 sql 查询中的 NULL 条件检查的问题。
下图是关于选择表 session_testset 的行,该表具有列“sync”和 NULL 值。
它有一行 NULL 值仍然返回 0 记录。
当我更改条件并检查“NOT NULL”时。它正在返回记录。
但这是错误的。为什么会这样?
这是我的表结构
据我所知,如果我们使用查询SELECT * FROM table_name WHERE column_name IS NULL
返回它没有值的列,这意味着未填充。您的表有一个值NULL
。检查您的代码而不在列中放置 NULL 值。
我认为 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
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;