通用转换进制函数,欢迎测试研究

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等
最后编辑zefuzhang 最后编辑于 2007-07-31 14:44:13