sql 按指定顺序排序

在ORACLE中使用Decode
Decode实际用途:Decode可以看做是逐值替换,Decode回为某个字段中的每个值在一系列的if/then测试中查找匹配值并返回指定值。
格式:
Decode(value,if1,then1,if2,then2,if3,then3.......,else)
其中value代表表中的一个列(不考虑数据类型)或者一个计算结果(如一个日期减去另一个日子、字符列的substr等)。每一行都对value进行测试,如果value符合条件if1,则decode的结果为then1,以此类推。
事实上,可以构造多对if/then。如果value与任一个if都不符则返回else。
示例:


select * from person order by decode(person_key,4,1,5,2,6,3,7,4)


返回排序结果:
person_key顺序 4 5 6 7

2、case
可以用Case函数代替Decode,case函数关键字when then else 和end说明后面的逻辑路径,通常,与使用等价的Decode相比,使用case函数显得比较繁复,但可以使用程序可读性强,而且更容易延续。
示例:
Sql代码 收藏代码

select * from person order by case person_key when 4 then 1 when 5 then 2 when 6 then 3 when 7 then 4 end


实现效果和使用decode一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值