Oracle用decode函數(shù)或CASE-WHEN實(shí)現(xiàn)自定義排序
1 問題
對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語句
另外,還可以用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)然,把字段直接賦值為對應(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫添加/刪除/修改表字段超詳細(xì)指南
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫添加/刪除/修改表字段的超詳細(xì)指南, 本文主要是關(guān)于Oracle數(shù)據(jù)庫表中字段的增加、刪除、修改和重命名的操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01DBF 文件恢復(fù) ORACLE 數(shù)據(jù)庫的方法
這篇文章主要介紹了DBF 文件 ORACLE 數(shù)據(jù)庫恢復(fù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Oracle中查詢表結(jié)構(gòu)的6種方法總結(jié)
工作中查看oracle表結(jié)構(gòu)經(jīng)常會(huì)遇到,下面這篇文章主要給大家介紹了關(guān)于Oracle中查詢表結(jié)構(gòu)的6種方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解
這篇文章主要介紹了Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解,也稱半連接和反連接,其實(shí)就是in、exists,需要的朋友可以參考下2014-07-07教你如何通過PL/SQL創(chuàng)建序列和觸發(fā)器實(shí)現(xiàn)表自增字段
本文給大家分享如何通過PL/SQL創(chuàng)建序列和觸發(fā)器實(shí)現(xiàn)表自增字段,需要注意的是,在數(shù)據(jù)庫操作中,觸發(fā)器的使用對系統(tǒng)資源耗費(fèi)相對較大,考慮到大表操作的性能問題,?我們盡可能的減少觸發(fā)器的使用,改為直接手動(dòng)調(diào)用序列函數(shù)即可2022-11-11oracle中fdisk導(dǎo)致的ASM磁盤數(shù)據(jù)丟失的解決方法
oracle中fdisk 導(dǎo)致的ASM磁盤數(shù)據(jù)丟失 有需要的朋友可參考一下2012-10-10Oracle數(shù)據(jù)庫表空間超詳細(xì)介紹
Oracle數(shù)據(jù)庫的數(shù)據(jù)存放在表空間中,表空間是一個(gè)邏輯的概念,它是由數(shù)據(jù)文件組成,表空間大小由數(shù)據(jù)文件的數(shù)量和大小決定,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫表空間的相關(guān)資料,需要的朋友可以參考下2023-05-05利用windows任務(wù)計(jì)劃實(shí)現(xiàn)oracle的定期備份
我們搞數(shù)據(jù)庫管理系統(tǒng)的經(jīng)常會(huì)遇到數(shù)據(jù)庫定期自動(dòng)備份的問題,有各種各樣的方法,這里介紹一種利用windows任務(wù)計(jì)劃實(shí)現(xiàn)oracle定期備份的方法供大家分享。2009-08-08