Conversão de várias bases - usando todas as combinações para encurtador de URL

Estou criando um encurtador de URL e estou tendo dificuldades com a maneira ideal de codificar um número (id) em uma cadeia de caracteres.

Eu estou usando os caracteres 0-9, A-Z, a-z, então será basicamente uma codificação de base 62. Isso é bastante básico, mas não utiliza todos os códigos possíveis. Os códigos que produziria seriam:

0, 1, ... y, z, 10, 11, ... zy, zz, 100, 101, ...

Observe que os códigos de 00 a 0z não são usados, o mesmo para 000 a 0zz e assim por diante. Eu gostaria de usar todos os códigos, assim:

0, 1, ... y, z, 00, 01, ... zy, zz, 000, 001, ...

Seria uma combinação de base 62 e base 63, com bases diferentes, dependendo da posição ... Usar a base 62 é fácil, por exemplo:

create procedure tiny_GetCode
    @UrlId int
as
set nocount on

declare @Code varchar(10)
set @Code = ''

while (@UrlId > 0 or len(@Code) = 0) begin
    set @Code = substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', @UrlId % 62 + 1, 1) + @Code
    set @UrlId = @UrlId / 62
end

select @Code

Mas ainda não consegui fazer uma conversão de várias bases para usar todos os códigos.

questionAnswers(1)

yourAnswerToTheQuestion