出现了一种情况,我需要在 SQL 语句的上下文中执行以 36 为基数到以 10 为基数的转换。 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
我正在寻找根据输入 01Z 计算值 71 的东西。编辑-这是向后的...给定 01Z 将其翻译为 71。
作为贿赂,每个有用的答案都会获得免费的赞成票。
Thanks
Evil.
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)
)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)