1 問題
對(duì)SQL
排序,只要在order by
后面加字段就可以了,可以通過加desc
或asc
來選擇降序或升序。但排序規(guī)則是默認(rèn)的,數(shù)字、時(shí)間、字符串等都有自己默認(rèn)的排序規(guī)則。有時(shí)候需要按自己的想法來排序,而不是按字段默認(rèn)排序規(guī)則。
比如字段值為英文字段:Monday
、Tuesday
、Wednesday
等,如果按字段默認(rèn)排序規(guī)則就為:
Friday
Monday
Saturday
Sunday
Thursday
Tuesday
Wednesday
實(shí)際我需要的是:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
2 decode函數(shù)
通過decode
函數(shù)可以實(shí)現(xiàn),如下:
select * from table_date
order by
decode(DateStr,
'Monday',1
'Tuesday',2
'Wednesday',3
'Thursday',4
'Friday',5
'Saturday',6
'Sunday',7,
0);
后面的數(shù)字可以不連續(xù)。
3 case when語(yǔ)句
另外,還可以用case when
來實(shí)現(xiàn):
select * from table_date
order by (CASE DateStr
WHEN 'Monday' then 1
WHEN 'Tuesday' then 2
WHEN 'Wednesday' then 3
WHEN 'Thursday' then 4
WHEN 'Friday' then 5
WHEN 'Saturday' then 6
WHEN 'Sunday' then 7
ELSE 0
END);
4 總結(jié)
當(dāng)然,把字段直接賦值為對(duì)應(yīng)的數(shù)字效率會(huì)高很多,通過另外一張表再建立映射關(guān)系。
到此這篇關(guān)于Oracle用decode函數(shù)或CASE-WHEN實(shí)現(xiàn)自定義排序的文章就介紹到這了,更多相關(guān)Oracle用decode函數(shù)或CASE-WHEN實(shí)現(xiàn)自定義排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- SQL Server中使用判斷語(yǔ)句(IF ELSE/CASE WHEN )案例
- MySQL巧用sum、case和when優(yōu)化統(tǒng)計(jì)查詢
- 解決mybatis case when 報(bào)錯(cuò)的問題
- MySQL case when使用方法實(shí)例解析
- 一篇文章帶你了解SQL之CASE WHEN用法詳解