程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 數據庫查詢結果的動態排序(3)

數據庫查詢結果的動態排序(3)

編輯:關於SqlServer
三、用列號作為參數

  就象第一個方案所顯示地那樣,你也許更喜歡用列的編號作為參數,而不是使用列的名字(列的編號即一個代表你想要作為排序依據的列的數字)。這種方法的基本思想與使用列名字作為參數的思想一樣:CASE表達式根據指定的列號確定使用哪一個列進行排序。Listing 7顯示了修改後的GetSortedShippers存儲過程。

【Listing 7:用列號作為參數】

ALTER PROC GetSortedShippers

@ColNumber AS int

AS

SELECT *

FROM Shippers

ORDER BY

CASE @ColNumber

WHEN 1 THEN CASE SIGN(ShipperID)

WHEN -1 THEN '-'

WHEN 0 THEN '+'

WHEN 1 THEN '+'

ELSE NULL

END +

RIGHT(REPLICATE('0', 10) +

CAST(ABS(ShipperID) AS varchar(10)), 10)

WHEN 2 THEN CompanyName

WHEN 3 THEN Phone

ELSE NULL

END

  當然,在這裡你也可以使用Richard的方法,避免ORDER BY子句中列數據類型帶來的問題。如果要根據ShipperID排序輸出,你可以按照下面的方式調用修改後的GetSortedShippers存儲過程:

EXEC GetSortedShippers 1


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved