您的位置:首页 > 数据库

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

2008-10-08 15:07 513 查看

问:怎样实现ORACLE中用一条SQL实现其它进制到十进制的转换?
答:具体示例如下:

-----二进制转换十进制-----------------
selectsum(data1)
from(selectsubstr('1101',rownum,1)*power
(2,length('1101')-rownum)data1
fromdual
connectbyrownum<=length('1101'))
-----八进制转换十进制-----------------
selectsum(data1)
from(selectsubstr('1101',rownum,1)*power
(8,length('1101')-rownum)data1
fromdual
connectbyrownum<=length('1101'))
-----十六进制转换十进制-----------------
selectsum(data1)
from(select(CASEupper(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'
ELSEsubstr('2D',rownum,1)
END)*power(16,length('2D')-rownum)data1
fromdual
connectbyrownum<=length('2D'))
注释:
对其它进制可以根据例子将power的底数改成相应的进制就可以了。
本文只是一个例子,大家可以把它封装成一个通用函数进行实用。
大家在试的时候将里面相应的其它进制的数值换成自己的数据就可以了(有多处)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: