在此表中,如果我进行以下查询
select * from table where order_id != 1
我想,我应该排第18行&但相反,查询无法获取任何行。
我可以像这样重写查询
select * from table where (order_id != 1 or order_id is null)
并且它会获取预期的数据,但是第一个查询不应该能够获取行18 & 19
吗?
答案 0 :(得分:5)
来自Docs
NULL
值可能会令人惊讶,直到您习惯它为止。从概念上讲,NULL表示“a missing unknown value
”,它的处理方式与其他值略有不同。
要测试NULL
,请使用IS NULL
和IS NOT NULL
运算符
您不能使用=, <, or <>
等算术比较运算符来测试NULL
。
由于与NULL
进行任何算术比较的结果也是NULL
,因此您无法从此类比较中获得任何有意义的结果。
答案 1 :(得分:1)
Null是Null不是无限数!
select * from table where ifnull(order_id,-1) != 1
答案 2 :(得分:0)
SQL运算符!=
或<>
仅适用于值。 NULL
不是一个价值 - 它只是缺乏价值。
检查这个答案,你可能会觉得这很有用:
Not equal <> != operator on NULL