sql 自定義排序


方法一:

比如需要對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)
 


免責聲明!

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



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