使用SQL仅Base 36到Base 10转换

前端之家收集整理的这篇文章主要介绍了使用SQL仅Base 36到Base 10转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql语句的上下文中出现了一种情况,在这种情况下,我需要执行一个基础36来转换基数.在Oracle 9或Oracle 10中似乎没有任何内容可以解决这类问题.我的Google-Fu和AskTom建议创建一个pl / sql函数来处理这个任务.这对我来说不是一个选择.我正在寻找有关采取这种方法的建议可能有助于我解决这个问题.

把它变成视觉形式…

WITH
Base36Values AS
(
    SELECT '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' myBase36 FROM DUAL
),TestValues AS
(
    SELECT '01Z' BASE36_VALUE,71   BASE10_VALUE FROM DUAL
)
SELECT *
FROM Base36Values,TestValues

我正在寻找一些计算值71,基于输入01Z.
编辑 – 这是向后…给定01Z将其翻译为71.

作为贿赂,每个有用的答案得到一个免费的upvote.

谢谢

邪恶.

解决方法

select sum(position_value) from
(
  select power(36,position-1) * case when digit between '0' and '9' 
                                     then to_number(digit)
                                     else 10 + ascii(digit) - ascii('A')
                                end
          as position_value
    from (
          select substr(input_string,length(input_string)+1-level,1) digit,level position
            from (select '01Z' input_string from dual)
            connect by level <= length(input_string)
         )
)
原文链接:/mssql/81446.html

猜你在找的MsSQL相关文章