oracle怎么以时间排序,oracle指定数据排序在前面怎么处理

最近工作碰到客户的特殊要求,需要将特定的数据排序在前面,然后才按时间顺序排序,这个之前还真没有碰到过,好在有万能的度娘,搜索了一下,发现可以实现,使用order by decode语句即可。

2dcb9488a2e479d298b4cd3b37afb6ca.png

对于order by熟悉SQL的朋友都知道了,而decode是oracle的函数,解释如下:

语法使用:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。

总结:简单来说就是if then的使用集合在一个函数中。有了这个函数,不但让SQL更简洁,而且可以应用到多处场合,今天说说应用于order by 之后,让指定内容排在前面。

例如有如下表TEST:

编号

姓名

年龄

分数

A001

小红

20

90

A002

小蓝

31

100

A003

小黑

27

98

A004

小白

35

93

A004

小紫

25

100

要求,25岁排序在前面,然后按分数排序,这时就需要使用order by decode语句了。

查询语句为:

SELECT * FROM TEST ORDER BY DECODE(年龄,25,分数)

查询结果如下:

7cf306c76802ff3ace059be644f98e8b.png

这就是DECODE函数强大之处,在SQL SERVER或MY SQL等数据库,估计实现这样的排序会有点复杂,但ORACLE中只需要order by decode却可。

等等,别走! ^_^

好消息,快手官方发红包啦,登录即送2元,秒提现! 查看详情>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值