当前位置:首页 > 个人杂谈 > 正文内容

oracle指定数据排序在前面怎么处理

作者: 葛屹肃 | 日期: 2018-11-11 | 分类: 个人杂谈

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

oracle指定数据排序在前面怎么处理

对于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,分数)

查询结果如下:

order by decode 查询结果

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

版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/438.html

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎大家参与讨论