ORACLE中用一条SQL实现其它进制到十进制的转换

ZDNet软件频道 时间:2008-10-29 作者:叶正盛 |  我要评论()
本文关键词:转换 sql Oracle 数据库 Oracle
这只是关于ORACLE connect by语法的一个妙用,也许没有太多的实用价值,不过我想可以给我们在解决实际的问题时给于一定的启发。

Oracle中用一条sql实现其它进制到十进制的转换

注:

对其它进制可以根据例子将power的底数改成相应的进制就可以了。

本文只是一个例子,大家可以把它封装成一个通用函数进行实用。

大家在试的时候将里面相应的其它进制的数值换成自己的数据就可以了(有多处)。

 

-----二进制转换十进制-----------------
select sum(data1)
  from (select substr("1101", rownum, 1) * power(2, length("1101") - rownum) data1
          from dual
        connect by rownum <= length("1101"))

-----八进制转换十进制-----------------
select sum(data1)
  from (select substr("1101", rownum, 1) * power(8, length("1101") - rownum) data1
          from dual
        connect by rownum <= length("1101"))

-----十六进制转换十进制-----------------
select sum(data1)
  from (select (CASE upper(substr("2D", rownum, 1))
                 WHEN "A" THEN "10"
                 WHEN "B" THEN "11"
                 WHEN "C" THEN "12"
                 WHEN "D" THEN "13"
                 WHEN "E" THEN "14"
                 WHEN "F" THEN "15"
                 ELSE substr("2D", rownum, 1)
               END) * power(16, length("2D") - rownum) data1
          from dual
        connect by rownum <= length("2D"))

转换

sql

Oracle

数据库

Oracle


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134