当sql语句中!=遇到null发生的故事
2016-02-22 18:17
232 查看
今天测试过程发现个问题,sql语句中!=不起作用,原sql语句如下(执行结果是0列):
数据库中,表company_member_rel部分数据如下:
![](https://img-blog.csdn.net/20160222181936333?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果companyId=111573则正常;
后来去研究下sql中的null,原来在sql中null是表示未知的类型,我们用常规的比较操作符去操作一个未知的东西是没有任何意义的,所以,sql返回的是0个结果,即使null=null在sql中也是没有意义的,判断“未知”=“未知”是否成立,这显然没有意义,两个未知的东东怎么比较呢。
所以上述问题想要有结果,可以将sql语句写成如下:
select * from company_member_rel where companyId=111552 and active !='N'
数据库中,表company_member_rel部分数据如下:
如果companyId=111573则正常;
后来去研究下sql中的null,原来在sql中null是表示未知的类型,我们用常规的比较操作符去操作一个未知的东西是没有任何意义的,所以,sql返回的是0个结果,即使null=null在sql中也是没有意义的,判断“未知”=“未知”是否成立,这显然没有意义,两个未知的东东怎么比较呢。
所以上述问题想要有结果,可以将sql语句写成如下:
select * from company_member_rel where companyId=111552 and (active !='N' or active is null)
相关文章推荐
- SQL实现表名更改,列名更改,约束更改
- redis 的两种持久化方式及原理
- plsql在安装有10g数据库及以上版本的环境上运行时database项为空的问题解决
- 国内外三个不同领域巨头分享的Redis实战经验及使用场景
- 文件上传表单 上传文件的细节 文件上传下载和数据库结合 - Mr_Red
- Mysql 分区 分表相关总结之方案选择
- Mysql第四天 数据库设计
- SQL当天日期的信息
- Mysql中用表a中数据更新另一表b中数据的同时a的数据被修改
- SQL SP_EXECUTESQL
- 与关系型数据库相比,MongoDB的优点
- MySQL中TPS和QPS的计算方式
- sqlite3使用备忘
- centos7 install mariadb
- MYSQL的常用命令和增删改查语句和数据类型
- MYSQL表类型MyISAM和InnoDB区别
- mysql中的数据表操作
- 读取nagios数据库至MySQL
- memcached
- MYSQL使用mysqldump导出某个表的部分数据