SQL Not in null

来源:互联网 发布:逆矩阵公式运算公式 编辑:程序博客网 时间:2024/05/29 17:48

在SQL中,如果在IN从句中出现null,将会出现完全不符合预期的情况。例如:

 select * from user  where id not in (1, 2, null)

此时返回结果为空,而不是除了1,2和null以外的结果。事实上,上述not in语句相当于:

where id <> 1 and id <>2 and id<>null

null与非null数据进行比较,其结果是UNKNOWN,因此不会返回任何结果。

SQL中的逻辑值有3个:True,False和Unknown。只有当计算结果为True,才会返回。出现错误的原因大多数是混淆了False和Unknown的情况。例如下面这个SQL:

SELECT * FROM t WHERE i = NULL;

永远不会返回返回结果,因此i = NULL的结果是Unknown,即使当i本身也是NULL的时候也是如此,即使用等号对NULL进行比较,其结果永远是Unknown。要判断是否为NULL,使用IS NULL

因此,在IN从句中,千万千万要记得去掉NULL。

关于SQL Null的更多内容,推荐wikipedia中的SQL Null。


另外,IN语句的作用相当于多个OR并列,例如:

where id in (1,2)

相当于:

where id = 1 or id=2
0 0
原创粉丝点击