Oracle、Mysql、Sql Server数据库中null的默认排序及解决方案1

–最大派
Oracle中排序时默认null最大;
处理方法:null first/last语法
(oracle9i版本后支持case语法)

–最小派
Sql Server中排序时默认null最小;
Mysql中排序时默认null最小;
处理方法:case语法,类似创建一无null的新列并优先进行排序
(不支持null first/last语法)

–实践
–age为年龄字段,null排在最后面(只对age排序:oracle升序,Mysql、Sql Serve降序)
–oracle专用nulls last语法

select * from table order by age nulls last;(升序)
select * from table order by age asc nulls last;(升序)
select * from table order by age desc nulls last;(降序)
–Mysql、Sql Server、oracle(oracle9i版本后支持)通用case语法
select * from table order by case when age is null then 1 else 0 end,age;(升序)
select * from table order by case when age is null then 0 else 1 end desc,age;(升序)
select * from table order by case when age is null then 1 else 0 end,age desc;(降序)
select * from table order by case when age is null then 0 else 1 end desc,age desc;(降序)
–age为年龄字段,null排在最前面(只对age排序:oracle降序,Mysql、Sql Serve升序)
–oracle专用nulls first语法

select * from table order by age nulls first;(升序)
select * from table order by age asc nulls first;(升序)
select * from table order by age desc nulls first;(降序)
–Mysql、Sql Server、oracle(oracle9i版本后支持)通用case语法
select * from table order by case when age is null then 0 else 1 end,age;(升序)
select * from table order by case when age is null then 1 else 0 end desc,age;(升序)
select * from table order by case when age is null then 0 else 1 end,age desc;(降序)
select * from table order by case when age is null then 1 else 0 end desc,age desc;(降序)

欢迎评论留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值