首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

資料庫查詢結果動態排序(三):欄位編號參數化、CASE 巢狀運算式與數值排序字串化技巧

     編輯:關於SqlServer

欄位編號作為排序參數

使用整數代表排序依據欄位(1=ShipperID, 2=CompanyName, 3=Phone),邏輯同欄位名稱版本。

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

數值欄位字串化排序

SIGN 判斷正負 → 前綴 '-'/'+' → ABS 絕對值 → REPLICATE('0',10) 左補零 → RIGHT(...,10) 取固定 10 位 → 字串排序 = 數值排序。

可搭配 Richard 多 CASE 拆分法

將 ORDER BY 拆為三個獨立 CASE,避免單一 CASE 類型限制,無需轉換。

呼叫範例

EXEC GetSortedShippers 1  -- 依 ShipperID 排序
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved