当前位置: 首页 > 面试题库 >

从基数10到基数26仅带字母,因此26将为aa

鲍驰
2023-03-14
问题内容

我在MySQL中具有CONV函数:

mysql> CONV(26,10,26)
      -> 10

但是我想要这样的东西:

mysql> CONV_LETTERS(26,10,26)
      -> aa

我怎样才能在MySQL中将基数从10转换为26,而只能使用字母使数字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?


问题答案:

此存储的函数将单个int转换为base26:

DROP FUNCTION IF EXISTS `base10to26`;
DELIMITER ;;

CREATE FUNCTION `base10to26`(`theNumber` INT(11) UNSIGNED) 
RETURNS VARCHAR(20) READS SQL DATA
BEGIN
    DECLARE colTxt VARCHAR(20);
    DECLARE value  INT(11);
    SET colTxt = '';

    REPEAT
        SET value  = theNumber % 26;
        IF value = 0 THEN SET value = 26; END IF;
        SET theNumber = (theNumber - value) / 26;
        SET colTxt = CONCAT(CHAR(value+64), colTxt);
    UNTIL theNumber = 0 END REPEAT;

    RETURN colTxt;
END;;
DELIMITER ;


 类似资料:
  • 较新的Bash版本支持一维数组. 数组元素可以用符号variable[xx]来初始化. 另外,脚本可以用declare -a variable语句来清楚地指定一个数组. 要访问一个数组元素,可以使用花括号来访问,即${variable[xx]}. 例子 26-1. 简单的数组用法 1 #!/bin/bash 2 3 4 area[11]=23 5 area[13]=3

  • 薪资太低,达不到要求 一面-hr面-10/26-20min 无自我介绍 实习遇到的问题,怎么解决的 Java开发的流程大概是怎样的 – 迭代开发流程

  • 本文向大家介绍js随机生成26个大小写字母,包括了js随机生成26个大小写字母的使用技巧和注意事项,需要的朋友参考一下 首先为大家介绍js生成26个大小写字母,主要用到 str.charCodeAt()和 String.fromCharCode()方法 1、使用 charCodeAt()来获得字符串中某个具体字符的 Unicode 编码。 2、fromCharCode()可接受一个(或多个)指定的

  • 基于Web的Neo4j图数据库管理工具是我们与Neo4j数据库主要的用户交互接口。使用它,你可以: - 监控 Neo4j 服务器 - 维护和浏览数据 - 通过控制台与数据库直接进行交互操作 - 浏览管理对象(JMX MBeans) 在你安装了Neo4j服务器后,这个工具可以通过地址: http://127.0.0.1:7474/访问。要使用它与嵌入模式的Neo4j图数据库交互,请参考:server

  • 自我介绍 有没有实习或者工作经历?(没有 焊死) 好 问项目 上来深挖项目 Redis里边分布式锁怎么实现的?(这里深挖的特别深) 下单扣库存具体流程?(这部分问的时间比较久) 点赞列表怎么实现的? Redis有哪些架构?(主从,集群,哨兵) 这些架构各自的优缺点? Java里边线程池怎么用?怎么实现的? mysql聚簇索引了解吗? 场景题: select * from table where a