SQLite不会对待||喜欢OR

时间:2013-06-24 17:40:41

标签: sqlite operators operator-precedence or-operator

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

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

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

1 个答案:

答案 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

SQLite reference