查询条件"<>"的疑问
有个表的一个字段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。