Conversión de base múltiple: uso de todas las combinaciones para acortador de URL

Estoy haciendo un acortador de URL, y estoy luchando con la forma óptima de codificar un número (id) en una cadena de caracteres.

Estoy usando los caracteres 0-9, A-Z, a-z, por lo que básicamente será una codificación de base 62. Eso es bastante básico, pero no hace uso de todos los códigos posibles. Los códigos que produciría serían:

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

Observe que no se utilizan los códigos 00 a 0z, lo mismo para 000 a 0zz, y así sucesivamente. Me gustaría usar todos los códigos, así:

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

Sería una combinación de base-62 y base-63, con diferentes bases dependiendo de la posición ... Usar base-62 es fácil, por ejemplo:

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

Pero todavía no he logrado hacer una conversión de múltiples bases, para hacer uso de todos los códigos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta