SqlServer按照指定順序對字段進行排序


最近的一個項目,使用存儲過程對報表進行分析,其中有一些名稱需要根據指定順序顯示,而其名稱對應的編號並不是按照要求的順序排列的。通過上網查找資料,發現sql 中的charindex函數可以幫助解決這個問題。但是這樣做也有一個弊端,當添加新的名稱后,可能就會達不到想要的結果了,沒有通用性。

給出一個例子: 

create table test(
 id1 varchar(10),
 id2 varchar(10),
 name varchar(20)
);
insert into test values('100','1001','
ccc');
insert into test values('100','1002','
bbb');
insert into test values('100','1003','
aaa');
insert into test values('101','1010','
fff');
insert into test values('101','1011','
ddd');
insert into test values('101','1012','eee');

查詢語句:

select * from dbo.test order by id1 ,CHARINDEX(id2,'1011,1012,1010,1003,1002,1001,');

查詢結果如圖所示

附 charindex函數說明截自百度百科):

 

語法
CHARINDEX ( expression1 , expression2 , [ start_location ] )
參數
expression1
一個 表達式,其中包含要尋找的 字符的次序。 expression1 是一個短 字符 數據類型分類的 表達式
expression2
一個 表達式,通常是一個用於搜索指定序列的列。 expression2 屬於字符串數據類型分類。
start_location
在  expression2 中搜索  expression1 時的起始 字符位置。如果沒有給定  start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜索。
返回類型
int

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM