IS NULL条件结果是否反转?

时间:2013-01-02 04:28:25

标签: sql sqlite

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

以下图片是关于为session_testset选择行,其中列“sync”为NULL值。

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

Not returning row

当我改变条件并检查它是否为“NOT NULL”时。它正在回归记录。

returning row

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

这是我的桌子结构
enter image description here

3 个答案:

答案 0 :(得分:2)

据我所知,如果我们使用SELECT * FROM table_name WHERE column_name IS NULL之类的查询返回没有值的列,则表示未填充。您的表的值为NULL。请检查您的代码,而不要在其中放置NULL值列。

答案 1 :(得分:2)

我认为Anaz已经准确地告诉了你所需要的东西 在列中没有值与在其中具有值'NULL'不同 您正在尝试使用IS NULL和IS NOT 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    

答案 2 :(得分: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;