使用表中的某个字段排序时,当存在null值时,null值总会排在首位

今天在处理一个排序问题时发现,当表字段存在null值时,通过order by null值会被排在首位。
原因
网上搜了一下关于此问题产生的原因
Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
解决方法
1、nvl函数 将值转换为0 就可以正常比较了
2、decode函数 也是可以将null转换为0
3、coalesce函数 跟nvl类似
4、case when 语句判断

所以说最后解决办法,无非就是将null值转换为数字,让它可以正常的参与比较,就可以得到正常的排序。当然要避免这个问题,可以在建表时就约束该字段,让其不能为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值