1. 程式人生 > >sql server自定義排序

sql server自定義排序

位置 函數返回 tar select else cnblogs 調用 nbsp 通過

方法一:

比如需要對SQL表中的字段NAME進行如下的排序:
張三(Z)
李四(L)
王五(W)
趙六(Z)


按照sql中的默認排序規則,根據字母順序(a~z)排,結果為:李四 王五 趙六 張三

自定義排序:order by charindex(NAME,‘張三李四王五趙六’)

CHARINDEX函數返回字符或者字符串在另一個字符串中的起始位置。CHARINDEX函數調用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中尋找的字符中,start_location是CHARINDEX函數開始在expression2中找expression1的位置。
CHARINDEX函數返回一個整數,返回的整數是要找的字符串在被找的字符串中的位置。假如CHARINDEX沒有找到要找的字符串,那麽函數整數“0”。讓我們看看下面的函數命令執行的結果:
CHARINDEX(‘SQL‘, ‘Microsoft SQL Server‘)
這個函數命令將返回在“Microsoft SQL Server”中“SQL”的起始位置,在這個例子中,CHARINDEX函數將返回“S”在“Microsoft SQL Server”中的位置11。
接下來,我們看這個CHARINDEX命令:
CHARINDEX(‘7.0‘, ‘Microsoft SQL Server 2000‘)
在這個例子中,CHARINDEX返回零,因為字符串“7.0” 不能在“Microsoft SQL Server”中被找到。接下來通過兩個例子來看看如何使用CHARINDEX函數來解決實際的T-SQL問題。 方法二: 針對表table_example的class字段排序,class字段值為:A、B、C、D。用戶要求table_example中的數據按照class字段值C、A、D、B的順序排序。    

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
) 方法三: 利用decode函數: select * from table_example order by decode(class,‘C‘,1,‘A‘,2,‘D‘,3,‘B‘,4) 轉自:https://www.cnblogs.com/zjl000/p/5555196.html

sql server自定義排序