SQL中Null需要注意的地方



一、Null不支持大小/相等判断


下面的2个查询,不管表 users 中有多少条记录,返回的记录都是0行


select * from  users where deleted_at = null;

select * from  users where deleted_at != null;


用常规的比较操作符(normal conditional operators)来将 null 与其他值比较是没有意义的。 Null 也不等于 Null


 
 
 
二、not in 与 Null
 
 
1、not in 实例
 
子查询(subselect)是一种很方便的过滤数据的方法。例如,如果想要查询没有任何包的用户,可以编写下面这样一个查询:
 
select * from users where id not in (select user_id from packages)
 
 
2、假若 packages 表中某一行的 user_id 是 null 的话,返回结果是空的!
 
 
3、出现上述的原因
 
 
例如
select * from users where id not in (1, 2, null)
 
这个SQL语句会等效于
select * from users where id != 1 and id != 2 and id != null
 
 
 
 
 
 
三、GROUP BY会把NULL分到一个组


 

四、Null与排序
 
 
在排序时, null 值被认为是最大的. 在降序排序时(descending),null值排在了最前面。





文章转载自:   SQL中Null的注意点   http://www.studyofnet.com/news/1037.html
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值