SQL自定義排序
前一陣子有一個需求,要按照使用者的需求安排排序規則:
舉例:
資料庫為Oracle,針對表table_example的class欄位排序,class欄位值為:A、B、C、D。
使用者要求table_example中的資料按照class欄位值C、A、D、B的順序排序。
方法一:
開始想了一個方法是select的時候增加一個自定義欄位custom,當class的值為C、A、D、B時令custom的值為1、2、3、4.
利用case when時,發現無需增加自定義欄位即可實現:
select * from teble_exaple
order by
(
case class
when 'C' then 1,
when 'A' then 2,
when 'D' then 3,
when 'B' then 4
else ''
end
)
方法二:
利用程式端控制,由於用的PB,實現起來邏輯還是比較複雜,沒有深究,思路:(僅為參考,未實現.)
dw_1.setsort(if(class = 'A', 'C', if(class = 'B', 'D', class)) A)
dw_1.sort
方法三:
利用decode函式:
select * from table_example order by decode(class,'C',1,'A',2,'D',3,'B',4)
sqlserver中類似功能的函式為charindex.
方法三為最簡潔的方案,個人感覺很多情況下能用sql實現的功能比程式端實現要直接。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28673746/viewspace-761582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL自定義排序MySql排序
- Python自定義排序Python排序
- Java 對映 自定義排序Java排序
- js:陣列自定義排序JS陣列排序
- Java 列表元素自定義排序Java排序
- Javascript陣列排序sort方法和自定義排序方法JavaScript陣列排序
- mysql自定義排序順序語句MySql排序
- Hadoop自定義輸出排序方式Hadoop排序
- Pl/SQL 自定義型別SQL型別
- 自定義PL/SQL異常SQL
- SQL SERVER 自定義函式SQLServer函式
- SQL 自定義函式FUNCTIONSQL函式Function
- spark:自定義分割槽,自定義排序,spark與jdbc,廣播變數等Spark排序JDBC變數
- JAVA Comparator 自定義排序 原始碼分析Java排序原始碼
- Java中使用lambda表示式自定義排序Java排序
- 用mysqlslap壓測自定義sqlMySql
- Sql Server系列:自定義函式SQLServer函式
- Linq to sql 自定義型別SQL型別
- 織夢dedecms自定義文章排序weight用法排序
- Elasticsearch實現自定義排序外掛(轉載)Elasticsearch排序
- DOClever 4.2.0 版本釋出,支援介面自定義排序排序
- MapReduce程式設計例項之自定義排序程式設計排序
- 1122. 陣列的相對排序(計數排序 / 自定義排序)陣列排序
- 使用Guava的ComparisonChain實現自定義的排序GuavaAI排序
- map自定義排序,根據鍵或者值排隊排序
- C# 泛型集合的自定義型別排序C#泛型型別排序
- js實現的陣列自定義排序介紹JS陣列排序
- 實現MyBatisPlus自定義sql注入器MyBatisSQL
- SQL Server 中自定義資料型別SQLServer資料型別
- 單據列表呼叫自定義SQL函式SQL函式
- Mybatis-plus核心功能-自定義SQLMyBatisSQL
- 集合框架-ArrayList集合儲存自定義物件的排序案例框架物件排序
- Excel2013如何按照自定義序列排序?Excel排序
- iOS中對NSArray中自定義的物件進行排序iOS物件排序
- 小書MybatisPlus第3篇-自定義SQLMyBatisSQL
- SQL優化案例-自定義函式索引(五)SQL優化函式索引
- sql mode 和使用者自定義分割槽SQL
- 自定義View:自定義屬性(自定義按鈕實現)View