收藏本页|设为主页|RSS
LOGO

我就上乐乐吧

MySQL数字进制转换技术杂萃 苦逼码农的点点滴滴,请多多指教!我就上乐乐吧资源的世界,资源的海洋,收集各类资源,以无LOGO原汁原味为主!欢迎大家交流。智者乐山,仁者乐水,独乐乐,不如众乐乐,乐山,乐水,乐天,乐地,乐乐吧,乐于分享,...

您当前的位置:首页»技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:http://weibo.com/237h
微信:SuperBeautylove
轻博客:http://www593668com.lofter.com/
花瓣:http://huaban.com/sinsunson
Q群1:231151757
Q群2:583138281
网站:http://www.593668.com
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
    MySQL数字进制转换

    发布日期:2019-10-11  关键词:MySQL

    之前相关短址文章也有提及,进制转换的问题,当然那些都是后端编程语言来进行,比如Java,PHP等,而这一次呢,我们要直接利用MySQL来进行相关转换。

    网上搜索了相关资料,发现MySQL有一个进制转换的函数。

    CONV(num,from_base,to_base)

    num 要转换的数字,from_base 现有进制,to_base 转换后的进制

    可以将一个数字从一个进制转换为另一个进制。转换成功后,函数返回数字的字符串表示形式,当入参数字为NULL时,返回值将为NULL。这里要强调下,最小进制为2,最大进制为36,如果要转换的数字为负数,则该数字被视为带符号数。否则,它被视为无符号数。比如执行如下代码:

    SELECT CONV(593668,10,2),CONV(593668,10,16),CONV(593668,10,36),CONV(-593668,10,36)

    执行结果如下:

    MySQL数字进制转换,MySQL,技术杂萃

    该函数好是好,不过短地址用的是62进制,它根本就不支持啊。这个就得另外来想办法来实现了。

    还是网上去查了下,发现并没有现存的好办法,看来真的得自己来想了。根据进制转换的原理,编写好如下的SQL:

    SELECT
      CONCAT(
        SUBSTR(
          '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
          FLOOR(593668 / POW(62,3)) % 62+1,
          1
        ),
        SUBSTR(
          '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
          FLOOR(593668 / POW(62,2)) % 62+1,
          1
        ),
        SUBSTR(
          '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
          FLOOR(593668 / POW(62,1)) % 62+1,
          1
        ),
        SUBSTR(
          '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
          FLOOR(593668 / POW(62,0)) % 62+1,
          1
        )
      ) AS tw

    显示结果完全正确[2uri],这里仅是判断四位,如果还有更多的位数,请直接调整相应代码即可。
    猜您喜欢:
    Q群:231151757微信:superimagelove官网:www.593668.com