!=在MySQL中没有像我预期的那样工作

时间:2011-03-09 06:03:45

标签: mysql sql

我有一个工作正常的查询,然后我想添加到现有的条件,如: 和some_column!= 1

该列值为null。但是查询停止找到它用来查找的行。知道为什么吗?

感谢。 亚历

4 个答案:

答案 0 :(得分:2)

几乎每种形式的SQL都因其在比较中处理空值而臭名昭着。如果列可以为空并且您想对其进行比较,则应使用ISNULL:

WHERE ISNULL(column_name, -1) != 0

那应该照顾好你的问题。

答案 1 :(得分:2)

几乎任何带null的表达式都是null。 1 != null是UNKNOWN(因此会导致从结果集中删除行)。 1 = null未知。 1 + null未知。

最重要的例外:null is null为TRUE。

答案 2 :(得分:1)

根据定义,

NULL是一个“未知值”...因此,null!= 1是一个未知结果。 NULL 可能为1,它可能不是 - 但关键是SQL不会尝试猜测。这是SQL处理值的一种奇怪方式,但它就是它。

因此,如果您想要考虑可能的空值,您需要更改您的位置:

AND some_column != 1 AND some_column IS NOT NULL

答案 3 :(得分:0)

使用'<>'可以工作......可以尝试一下

where ISNULL(coloumn_name,1) <> 1