萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> 數據庫查詢結果的動態排序(3)

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

三、用列號作為參數

  就象第一個方案所顯示地那樣,你也許更喜歡用列的編號作為參數,而不是使用列的名字(列的編號即一個代表你想要作為排序依據的列的數字)。這種方法的基本思想與使用列名字作為參數的思想一樣: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

關鍵詞:排序 

copyright © 萬盛學電腦網 all rights reserved