Как перевести 36-ричное число в десятичное
Код
create function base36_to_base10 (@base36 char(6))
returns char(10)
as
begin
if @base36 is null return null
if rtrim(@base36)='0' return ' 0'
declare @base10 char(10)
declare @ch char(1)
declare @int int
declare @bigint bigint
declare @len int
declare @por bigint
declare @c int
set @base36=ltrim(@base36)
set @len=len(@base36)
set @por=1
set @bigint=0
set @c=@len
while @c>0
begin
set @ch=substring(@base36,@c,1)
if (@ch<'A')
set @int=ascii(@ch)-ascii('0')
else
set @int=ascii(@ch)-ascii('A')+10
set @bigint=@bigint+@int*@por
set @c=@c-1
set @por=@por*36
end
set @base10=right(' '+rtrim(cast(@bigint as char(10))),10)
return (@base10)
end
Опубликовано на сайте:
https://HelpF.pro
Прямая ссылка:
https://HelpF.pro/faq/view/30.html