我在一个表中有一列的值如下
col1
----
AGP
BBP
CGR
DER
ESP
在选择时,需要像下面的一样对值进行排序
col1
---
DER
ESP
AGP
CGR
BBP
使用CASE
表达式:
SELECT col1
FROM table_name
ORDER BY
CASE col1
WHEN 'DER' THEN 1
WHEN 'ESP' THEN 2
WHEN 'AGP' THEN 3
WHEN 'CGR' THEN 4
WHEN 'BBP' THEN 5
ELSE 6
END;
或DECODE
:
SELECT col1
FROM table_name
ORDER BY
DECODE( col1, 'DER', 1, 'ESP', 2, 'AGP', 3, 'CGR', 4, 'BBP', 5, 6 );
样本数据:
CREATE TABLE table_name ( col1 ) AS
SELECT 'AGP' FROM DUAL UNION ALL
SELECT 'BBP' FROM DUAL UNION ALL
SELECT 'CGR' FROM DUAL UNION ALL
SELECT 'DER' FROM DUAL UNION ALL
SELECT 'ESP' FROM DUAL;
两种输出:
|COL1||:---||订单||ESP||AGP||CGR||BBP|
db<gt;小提琴这里
您可以在order by
中使用DECODE
,如下所示:
select *
from your_table
order by decode(col1,'DER', 1, 'ESP', 2, 'AGP', 3,
'CGR', 4, 'BBP', 5, 6)