zoukankan      html  css  js  c++  java
  • mysql 10进制与35进制之间的转换 注意Power处理bigint的问题

    35进制的目的是防止0和O造成的视觉误差

    BEGIN
        DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果
      DECLARE m_Remainder BIGINT; -- 余数
      DECLARE m_Base35 VARCHAR(1);

      SET m_Remainder=0;
      SET m_StrHex35='';
     
      WHILE p_Hex10>=35 DO
            SET m_Remainder=p_Hex10%35;
            SET p_Hex10=(p_Hex10-m_Remainder)/35;

            SET m_Base35=SUBSTRING('0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ',m_Remainder+1,1);

            SET m_StrHex35=CONCAT(m_Base35,m_StrHex35);

        END WHILE;

      SET m_Remainder=p_Hex10%35;
      SET m_Base35=SUBSTRING('0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ',m_Remainder+1,1);
      SET m_StrHex35=CONCAT(m_Base35,m_StrHex35);
        -- PRINT @StrHex35
        RETURN  m_StrHex35;
    END

    BEGIN
        DECLARE m_StrHex35Len INT ;      -- 被转换35进制字串的长度
        DECLARE m_Base35To10  INT ;      -- 每位35进制基数对应的10进制数据大小
        DECLARE m_Index       INT ;      -- 字符串索引
        DECLARE m_Hex10       BIGINT ;      -- 被返回10进制数据
        DECLARE m_Base35      VARCHAR(1) ; -- 35进制基数

      DECLARE m_Middle_Data BIGINT;

        SET m_Hex10=0;
        SET m_StrHex35Len=LENGTH(p_StrHex35);
        SET m_Index=1;

        WHILE (m_Index<=m_StrHex35Len) DO

            SET m_Base35=SUBSTR(p_StrHex35 from m_Index for 1);

            SET m_Base35To10= LOCATE(m_Base35,'0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ') - 1;

            -- 注意:这里必须先把Power的值保存到一个变量,不能计算的结果直接乘一个另外的变量,这样会造成计算结果不正确
            SET m_Middle_Data = POWER(35,m_StrHex35Len-m_Index);

            SET m_Hex10=m_Hex10+m_Base35To10 * m_Middle_Data;

            SET m_Index=m_Index+1;
        END WHILE;

        RETURN   m_Hex10;
    END

  • 相关阅读:
    IE浏览器下报错: strict 模式下不允许一个属性有多个定义
    Vue 做的项目在IE下面打开一片空白解决方法
    小程序如何动态修改标题navigationBarTitleText
    小程序-for循环遍历的使用
    vue项目-打印页面中指定区域的内容(亲测有效!)
    vue省市区三级联动(高仿京东)
    vue-父组件向子组件传值
    Sea.js 手册与文档
    angular之模块开发二
    angular之跨域
  • 原文地址:https://www.cnblogs.com/si812cn/p/5670431.html
Copyright © 2011-2022 走看看