我以后人的名义自我回答。问题是为什么这个SQLite查询不能达到我的预期:
SELECT is_current FROM sp_table WHERE is_current != 1 || is_current IS NULL;
它只选择is_current为NULL的行!呸。
答案 0 :(得分:0)
问题在于SQLite的||运营商不合逻辑或!它是一个字符串连接运算符。
OR是正确的运算符。
另外,||优先级高于SQLite中的所有其他运算符,所以我的表达式甚至没有按照我想的顺序进行评估。
正确的表达方式是:
SELECT is_current FROM sp_table WHERE is_current != 1 OR is_current IS NULL;
最后,值得注意的是,您不能用SELECT is_current FROM sp_table WHERE is_current != 1
替换该表达式,因为在SQLite NULL != 1
中评估为false。您必须明确检查is_current IS NULL
。