程式碼分析
DECLARE @BASE_35 VARCHAR(100)
DECLARE @BASE_10 INT
SET @BASE_10 = '88'
SET @BASE_35 = N''
SELECT @BASE_35 = CASE WHEN @BASE_10%35 BETWEEN 10 AND 34
THEN CHAR(@BASE_10%35+55)
ELSE CAST(@BASE_10%35 AS VARCHAR)
END + @BASE_35,
@BASE_10 = @BASE_10/35
FROM (SELECT NUMBER FROM MASTER.DBO.SPT_VALUES WHERE TYPE=N'P' AND NUMBER<10) AS A
ORDER BY NUMBER DESC
SELECT @BASE_35
原理說明
- 每次取
@BASE_10 % 35 的餘數,對應一個三十五進位字元。
- 餘數 10~34 轉換為字母 A~Y(透過
CHAR(餘數+55))。
- 將
@BASE_10 除以 35 繼續下一位,直到商為 0。
- 透過
ORDER BY NUMBER DESC 從高位到低位拼接結果字串。