HelpF.pro

Как перевести 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