oracle指定数据排序在前面怎么处理
作者: 葛屹肃 | 日期: 2018-11-11 | 分类: 个人杂谈
最近工作碰到客户的特殊要求,需要将特定的数据排序在前面,然后才按时间顺序排序,这个之前还真没有碰到过,好在有万能的度娘,搜索了一下,发现可以实现,使用order by decode语句即可。
对于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,分数)
查询结果如下:
这就是DECODE函数强大之处,在SQL SERVER或MY SQL等数据库,估计实现这样的排序会有点复杂,但ORACLE中只需要order by decode却可。
版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/438.html
文章链接:https://www.geyisu.com/438.html