oracle自定义order by,SQL学习之使用order by 按照指定顺序排序或自定义顺序排序
时间: 2024-01-06 21:07:12 浏览: 178
带有限制条件的查询-Oracle数据库
可以使用Oracle的DECODE函数或CASE语句来实现自定义排序。
DECODE函数语法如下:
```
DECODE(expr, search1, result1, search2, result2, ..., default)
```
其中,expr是需要进行排序的列名,search1、search2等是需要比较的值,result1、result2等是对应的排序结果,default是当expr不匹配search1、search2等时的默认排序结果。
例如,有一个订单表order,需要按照订单状态(已取消、已完成、待处理、进行中)进行排序,可以使用如下SQL语句:
```
SELECT * FROM order
ORDER BY DECODE(status, '已取消', 1, '已完成', 2, '待处理', 3, '进行中', 4, 5)
```
这里将不同的状态值映射为不同的数字,然后按照数字进行排序。
CASE语句也可以实现类似的功能,语法如下:
```
CASE expr
WHEN search1 THEN result1
WHEN search2 THEN result2
...
ELSE default
END
```
例如,上面的例子可以使用如下的CASE语句实现:
```
SELECT * FROM order
ORDER BY CASE status
WHEN '已取消' THEN 1
WHEN '已完成' THEN 2
WHEN '待处理' THEN 3
WHEN '进行中' THEN 4
ELSE 5
END
```
这里的作用与DECODE函数相同,都是将不同的状态值映射为不同的数字,然后按照数字进行排序。
阅读全文