SQL語句自定義排序

2022-03-02 22:54:22 字數 777 閱讀 3727

需求

從訂單表中查資料,並且按照status欄位1,3,4,2,排序

分析

按照orderby status方法,不管asc還是desc達不到目的。

可以用case when函式,但是case when的可維護性是比較差的,客戶說按1,4,3,2排序,或者新增兩個5,6,就要調整case when的順序,容易出錯。

sql中有個函式charindex(exp1,exp2),功能就是判斷exp1在exp2中的位置,如果不存在則返回0,類似js或者.net中的indexof函式

那麼就可以迂迴實現,status欄位就是exp1,客戶需求的1342就是exp2,這樣就是返回status在1342中的位置,從而實現排序,而且,客戶想修改排序規則,只需要修改exp2中的字串即可,維護性比case when大大提公升。

**

select

charindex(rtrim(cast(status as

nchar)),'

1,3,4,2

') as rownumber,*

from orders order

bycharindex(rtrim(cast(status as

nchar)),'

1,3,4,2

')

注意

嚴謹的說,使用這種方法需要加乙個where語句,判斷status在(1,3,4,2)中

activity自定義sql語句

1.例子 自定義語句查詢act id group資料 獲取相應的表名 自定義sql語句中的值寫法 可以理解成key value形式 通過parameter方法為sql中定義的 賦值,key前後要保持一致 string sql select from managementservice.gettabl...

MyBatis Plus 自定義sql語句

一 引言 mp自帶的條件構造器雖然很強大,有時候也避免不了寫稍微複雜一點業務的sql,那麼那麼今天說說mp怎麼自定義sql語句吧。二 配置 自定義的sql當然是寫在xml檔案中的啦,那麼首先來定義xml檔案的位置,在yml配置檔案如下 mybatis plus 三 具體實現 使用註解實現 authe...

sql實現自定義排序

實際應用中sql提供的預設按某一欄位排序,asc desc並不滿足需要,需要根據使用者需求自定義的按照默寫順序排序,這裡提供乙個方法,適用於自定義型別不多的情況下,多了就得存欄位關聯表排序了吧。例子如下 select from select 3 as id,小明 as name from dual ...