在数据库应用编码中,通常需要对某些数据进行编码,常用编码规则为基于数值的十进制编码,基于数字与字符的十六进制编码,如果数据量再大一些,则十六进制不能满足,由于在十六进制中,英文字符只用了6个(ABCDEF),而英文字符有26个,因此可以构造11(10+1(A))- 16(10+6(ABCDEF))--36(10+26(AB...XYZ))等进制编码方式,以下给出36进制SQL 函数编码。
ALTER FUNCTION [dbo].[Convert10To36]
(
@val int
)
RETURNS nvarchar(6)
AS
BEGIN
DECLARE @X36 varchar(36);
DECLARE @result nvarchar(6);
DECLARE @idx int;
set @X36 = '0123456789ABCDEFGHIJHKLMNOPQRSTUVWXYZ';
set @result = '';
while (@val >= 36)
begin
set @idx=@val / 36 ;
set @result = @result + substring(@X36,@idx +1,1) ;
set @val = @val - @idx * 36;
end
if (@val >= 0)
begin
set @result = @result + substring(@X36,@val + 1,1);
end
return @result;
END