我有一个工作正常的查询,然后我想添加到现有的条件,如: 和some_column!= 1
该列值为null。但是查询停止找到它用来查找的行。知道为什么吗?
感谢。 亚历
答案 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