sqlite3,如果它不是null,它不是0,它不是“”,它是什么?

时间:2014-01-05 21:49:35

标签: select sqlite null isnullorempty

在sqlite3中,我使用以下语法将行插入表中:

INSERT INTO schedule VALUES(some_date, (SELECT id_from_another_table WHERE where_clause));

显而易见的假设是这个嵌入式(SELECT ...)查询在结果集为空时将返回NULL。

然而,情况似乎并非如此......

sqlite> .schema schedule
CREATE TABLE schedule(date date, agent_id integer);

sqlite> select * from schedule;
2014-01-09|22
2014-01-09|
2014-01-09|23
2014-01-09|24

注意第二行是如何缺少agent_id的条目的?

sqlite> select * from schedule where agent_id = null;
#nothing

sqlite> select * from schedule where agent_id = 0;
#nothing

sqlite> select * from schedule where agent_id = "";
#nothing

sqlite> select * from schedule where agent_id LIKE "% %";
#nothing

如果agent_id与null,“”,0或其中有空格的任何内容不匹配,那该怎么办?

提前致谢! : - )

1 个答案:

答案 0 :(得分:2)

在我使用过的所有其他数据库中,语法都是column IS NULL。从我可以看到它在sqlite中是相同的。

select * from schedule where agent_id IS NULL;