日期:2014-05-19  浏览次数:20565 次

查询条件"<>"的疑问
有个表的一个字段a不插入值,所有记录的该字段都保持null的状态,但我select的时候,选择a <> '1 '的情况,按理说应该把所有的数据都查出来,但实际上查不出来,这是为什么,难道在where后面提到的字段只要是null,就会过滤掉?

------解决方案--------------------
null <> '1 '的逻辑值既不是true也不是false而是unknown
------解决方案--------------------
可以这么判断: WHERE ISNULL(a, ' ') = ' '
------解决方案--------------------
使用了 NULL 就要考虑三种状态
true false unknown
------解决方案--------------------
isnull (a, '99 ') = '99 '
------解决方案--------------------
WHERE ISNULL(a, ' ') <> '1 '

------解决方案--------------------
WHERE ISNULL(a, '0 ') <> '1 '

------解决方案--------------------
比较运算符测试两个表达式是否相同!而在sql中
if(null = null)
print '1 '
都无法判断~~那就更不用说1 <> null了
------解决方案--------------------
WHERE ISNULL(a, '0 ') <> '1 '
------解决方案--------------------
ISNULL
以指定的取代值來取代 NULL。

語法
ISNULL ( check_expression , replacement_value )

引數
check_expression

是要檢查 NULL 的運算式,而 check_expression 可以是任何型別。

replacement_value

如果 check_expression 為 NULL 時,所傳回的運算式,replacement_value 必須有與 check_expresssion 相同的型別。

傳回型別
傳回與 check_expression 相同的型別。

備註
如果不是 NULL 的話,會傳回 check_expression 的值,否則會傳回 replacement_value。