Для T-SQL следующая логика будет выполнять задачу, которую выполняет код Oracle выше. Это общее общее решение, и оно будет поддерживать от Base-X до Base-10:
select
sum(power(base,pos-1) *
case when substring(cnv,pos,1) between '0' and '9' then
cast(substring(cnv,pos,1) as int)
else 10 + ascii(upper(substring(cnv,pos,1))) - ascii('A') end)
from (values(reverse('01Z'), 36)) as t(cnv,base)
left join (values(1),(2),(3),(4),(5),(6)) as x(pos)
on pos <= len(cnv)
Для использования с другими базами просто используйте:
from (select cnv = reverse('FF'), base=16) as t
или
from (select cnv = reverse('101'), base=2) as t
Обратите внимание, что для поддержки строк длиннее 6 вам нужно добавить больше значений в вектор положения.