OK_008 blog

No incapable except unthinkable. God helps those who help themselves
随笔 - 119, 文章 - 0, 评论 - 93, 引用 - 8
数据加载中……

巧用一条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的底数改成相应的进制就可以了。



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



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

来源:赛迪网 作者:han
http://database.csdn.net/page/e6d07a2b-5126-4bf4-9414-890f4874f272

posted on 2008-02-02 09:06 OK_008 阅读(200) 评论(0)  编辑 收藏 网摘 所属分类: SQL 2000/SQL 2005


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: