我在Mysql中有CONV函数:
mysql> CONV(26,10,26)
-> 10
但我想要像这样的东西:
mysql> CONV_LETTERS(26,10,26)
-> aa
如何在MySQL中将十进制转换为二十六进制,但只使用字母,使数字26变为aa?
更新
我已经做到了:
delimiter //
CREATE PROCEDURE `base10_to_base26_letters`(IN `nr` BIGINT)
BEGIN
SET @letters='abcdefghijklmnopqrstuvwxyz';
select SUBSTRING(@letters,`nr`+1,1);
END//
更新2
试图将这个php函数转换为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?