在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或其中有空格的任何内容不匹配,那该怎么办?
提前致谢! : - )
答案 0 :(得分:2)
在我使用过的所有其他数据库中,语法都是column IS NULL
。从我可以看到它在sqlite中是相同的。
select * from schedule where agent_id IS NULL;