我在Mysql中有CONV函数:
mysql> CONV(26,10,26)
-> 10
但我想要这样的东西:
mysql> CONV_LETTERS(26,10,26)
-> aa
如何在 MySQL 中将基数 10 转换为基数 26,但仅使用字母,以便数字 26 将变为 aa?
UPDATE
到目前为止我得到了:
delimiter //
CREATE PROCEDURE `base10_to_base26_letters`(IN `nr` BIGINT)
BEGIN
SET @letters='abcdefghijklmnopqrstuvwxyz';
select SUBSTRING(@letters,`nr`+1,1);
END//
UPDATE 2
尝试转换thisphp 函数到 MySQL 程序。
PHP 函数:
function generateAlphabet($na) {
$sa = "";
while ($na >= 0) {
$sa = chr($na % 26 + 65) . $sa;
$na = floor($na / 26) - 1;
}
return $sa;
}
到目前为止我的MySQL过程:
delimiter //
CREATE PROCEDURE `base10_to_base26_letters`(IN `nr` BIGINT)
BEGIN
SET @n=`nr`,@letters='abcdefghijklmnopqrstuvwxyz',@r='';
while @n>=0 do
set @n=@n/26-1,@r=concat(SUBSTRING(@letters,@n%26,1),@r);
end while;
select @r;
END//
为什么我尝试过的任何数字都只能得到 z ?