通用转换进制函数,欢迎测试研究
CREATE FUNCTION dbo.fn_dectobase(@val AS BIGINT, @base AS INT)
RETURNS VARCHAR(63)
AS
BEGIN
IF @val < 0 OR @base < 2 OR @base > 36 RETURN NULL;
DECLARE @r AS VARCHAR(63), @alldigits AS VARCHAR(36);
SET @alldigits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
SET @r = '';
WHILE @val > 0
BEGIN
SET @r = SUBSTRING(@alldigits, @val % @base + 1, 1) + @r;
SET @val = @val / @base;
END
RETURN @r;
END
注:@base参数为进制数值,如2,8,16等