阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
查看: 1631|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2014-11-19 12:45
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2009-2-9 12:27:23 | 显示全部楼层 |阅读模式
    具体示例如下:
    -----二进制转换十进制-----------------
    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的底数改成相应的进制就可以了。
    本文只是一个例子,大家可以把它封装成一个通用函数进行实用。
    大家在试的时候将里面相应的其它进制的数值换成自己的数据就可以了(有多处)。
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表