問:怎樣實現(xiàn)ORACLE中用一條SQL實現(xiàn)其它進制到十進制的轉換?
答:具體示例如下:
-----二進制轉換十進制-----------------
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'))
注釋:
對其它進制可以根據(jù)例子將power的底數(shù)改成相應的進制就可以了。
本文只是一個例子,大家可以把它封裝成一個通用函數(shù)進行實用。
大家在試的時候將里面相應的其它進制的數(shù)值換成自己的數(shù)據(jù)就可以了(有多處)。