/*
========================================================
Procedure: usp_ConvertIntTo
Description: Convert a number to 1~36
Creation Date: 2005-4-25
Author: Frank Xie
========================================================
Revision History
========================================================
Rev Date Description
========================================================
1 2005-4-25 Generated by Frank Xie
========================================================
DECLARE @DD VARCHAR(50)
EXEC usp_ConvertIntTo 55,36,@DD OUTPUT
PRINT @DD
*/
CREATE PROCEDURE usp_ConvertIntTo
(
@aNumber INT = 0, --需转换的10进制数
@convertType INT = 10, --需要转变为的进制
@result VARCHAR(50) OUTPUT --返回的转变后的值
)
AS
BEGIN
DECLARE @List VARCHAR(36)
DECLARE @yushu INT
DECLARE @shang INT
IF @convertType > 36
BEGIN
RAISERROR ('@convertType must less then 36', 16, 1)
return -1
END
ELSE
BEGIN
IF @convertType < 1
BEGIN
RAISERROR ('@convertType must lager then 1', 16, 1)
return -1
END
END
IF @result IS NULL
SET @result = ''
SET @List = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SET @yushu = @aNumber % @convertType
IF @yushu > 0
SET @result = SubString(@List,@yushu,1) + @result
ELSE
BEGIN
IF @result <> '0'
SET @result = '0' + @result
END
SET @shang = @aNumber / @convertType
IF @shang >= @convertType
BEGIN
DECLARE @RES INT
EXEC @RES = usp_ConvertIntTo @shang,@convertType,@result OUTPUT
IF @RES = -1
RETURN -1
END
ELSE
SET @result = SubString(@List,@shang,1) + @result
return 0
END