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
- SQL Not in null
- SQL NOT IN NULL的问题
- SQL NOT IN constraint and NULL values
- SQL NOT IN NULL的问题
- SQL NOT IN NULL的问题
- not in null
- T-SQL not in 遇到 null 暗含的陷阱
- not in/not exists+null
- SQL NOT NULL 约束
- SQL NOT NULL 约束
- SQL - NOT NULL约束
- SQL NOT NULL 约束
- SQL NOT NULL 约束
- SQL NOT NULL
- SQL NOT NULL 约束
- 理解NULL IN SQL
- Oracle NULL 和 NOT IN
- Oracle SQL NULL 值对 IN/NOT IN语句的影响
- 一个简单的protobuf协议
- mysql免安装版安装配置+设置密码
- C\C++代码优化的27个建议
- Hibernate的一级缓存Session和二级缓存SessionFactory
- Java枚举的七种常见用法
- SQL Not in null
- spring mvc
- sybase函数汇总
- EXT.NET后台获取GridPanel所有行
- 如何:使用 foreach 访问集合类(C# 编程指南)
- 用 RPM 打包软件 第 3 部分
- openstack实践各种问题汇总
- 基于.net开发chrome核心浏览器【五】
- Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件