-2

我以后代的名义自我回答。问题是为什么这个 SQLite 查询没有达到我的预期:

SELECT is_current FROM sp_table WHERE is_current != 1 || is_current IS NULL;

它只选择 is_current 为 NULL 的行!呸。

4

1 回答 1

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 is_current IS NULL

SQLite 参考

于 2013-06-24T17:40:41.203 回答