1 問題
對SQL排序,只要在order by后面加欄位就可以了,可以通過加desc或asc來選擇降序或升序,但排序規則是默認的,數字、時間、字串等都有自己默認的排序規則,有時候需要按自己的想法來排序,而不是按欄位默認排序規則,
比如欄位值為英文欄位:Monday、Tuesday、Wednesday等,如果按欄位默認排序規則就為:
Friday
Monday
Saturday
Sunday
Thursday
Tuesday
Wednesday
實際我需要的是:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
2 decode函式
通過decode函式可以實作,如下:
select * from table_date
order by
decode(DateStr,
'Monday',1
'Tuesday',2
'Wednesday',3
'Thursday',4
'Friday',5
'Saturday',6
'Sunday',7,
0);
后面的數字可以不連續,
3 case when陳述句
另外,還可以用case when來實作:
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 總結
當然,把欄位直接賦值為對應的數字效率會高很多,通過另外一張表再建立映射關系,
歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!
歡迎關注微信公眾號<南瓜慢說>,將持續為你更新...

多讀書,多分享;多寫作,多整理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/190790.html
標籤:Java
