仅使用 SQL 将 Base 36 转换为 Base 10

Base 36 to Base 10 conversion using SQL only(仅使用 SQL 将 Base 36 转换为 Base 10)
本文介绍了仅使用 SQL 将 Base 36 转换为 Base 10的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

出现了一种情况,我需要在 SQL 语句的上下文中执行 base 36 到 base 10 的转换.Oracle 9 或 Oracle 10 中似乎没有内置任何内容来解决此类问题.我的 Google-Fu 和 AskTom 建议创建一个 pl/sql 函数来处理该任务.在这一点上,这对我来说不是一个选择.我正在寻找可能有助于我解决此问题的方法的建议.

A situation has arisen where I need to perform a base 36 to base 10 conversion, in the context of a SQL statement. There doesn't appear to be anything built into Oracle 9, or Oracle 10 to address this sort of thing. My Google-Fu, and AskTom suggest creating a pl/sql function to deal with the task. That is not an option for me at this point. I am looking for suggestions on an approach to take that might help me solve this issue.

把它变成一个视觉形式...

To put this into a visual form...

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.

I am looking for something to calculate the value 71, based on the input 01Z. EDIT - that is backwards... given 01Z translate it to 71.

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

As a bribe, each useful answer gets a free 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)
         )
)

这篇关于仅使用 SQL 将 Base 36 转换为 Base 10的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)