Многоосновное преобразование - использование всех комбинаций для сокращения URL

Я делаю сокращение URL, и я борюсь с оптимальным способом кодирования числа (id) в символьную строку.

Я использую символы 0-9, A-Z, a-z, так что в основном это будет кодировка base-62. Это довольно простой, но он не использует все возможные коды. Коды, которые он будет производить, будут:

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

Обратите внимание, что коды от 00 до 0z не используются, то же самое для 000 до 0zz и так далее. Я хотел бы использовать все коды, как это:

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

Это будет некоторая комбинация base-62 и base-63, с различными базами в зависимости от положения ... Использовать base-62 легко, например:

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

Но мне пока не удалось сделать из него многоосновное преобразование, чтобы использовать все коды.

Ответы на вопрос(1)

Ваш ответ на вопрос