国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle用decode函數或CASE-WHEN實現自定義排序

2020-07-26 13:25:50
字體:
來源:轉載
供稿:網友

1 問題

SQL排序,只要在order by后面加字段就可以了,可以通過加descasc來選擇降序或升序。但排序規則是默認的,數字、時間、字符串等都有自己默認的排序規則。有時候需要按自己的想法來排序,而不是按字段默認排序規則。

比如字段值為英文字段:MondayTuesdayWednesday等,如果按字段默認排序規則就為:

Friday
Monday
Saturday
Sunday
Thursday
Tuesday
Wednesday

實際我需要的是:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

2 decode函數

通過decode函數可以實現,如下:

select * from table_dateorder 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_dateorder 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 總結

當然,把字段直接賦值為對應的數字效率會高很多,通過另外一張表再建立映射關系。

到此這篇關于Oracle用decode函數或CASE-WHEN實現自定義排序的文章就介紹到這了,更多相關Oracle用decode函數或CASE-WHEN實現自定義排序內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长沙县| 彭阳县| 淮安市| 蒲江县| 错那县| 南木林县| 景宁| 淳化县| 如东县| 临武县| 广州市| 康保县| 镇坪县| 房山区| 吉安市| 汝阳县| 宁陵县| 郑州市| 修武县| 汝南县| 东莞市| 无棣县| 新巴尔虎右旗| 龙江县| 萝北县| 石门县| 都匀市| 遂昌县| 佛坪县| 巴青县| 仙居县| 南昌县| 宿州市| 涟源市| 儋州市| 崇阳县| 博乐市| 福安市| 巴林左旗| 布尔津县| 莱阳市|