在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) ) )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。