新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Oracle教程 > 正文:用一条SQL 实现其它进制到十进制的转换

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

新客网 XKER.COM 2007-07-31 来源: huawuque 收藏本文
ORACLE中用一条SQL实现其它进制到十进制的转换

问:怎样实现ORACLE中用一条SQL实现其它进制到十进制的转换?

答:具体示例如下:

 

-----二进制转换十进制-----------------
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'))

注:

 

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

 

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

 

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

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐