問(wèn):怎樣實(shí)現(xiàn)ORACLE中用一條SQL實(shí)現(xiàn)其它進(jìn)制到十進(jìn)制的轉(zhuǎn)換?
答:具體示例如下:
-----二進(jìn)制轉(zhuǎn)換十進(jìn)制-----------------
select sum(data1)
from (select substr('1101', rownum, 1) * power
(2, length('1101') - rownum) data1
from dual
connect by rownum <= length('1101'))
-----八進(jìn)制轉(zhuǎn)換十進(jìn)制-----------------
select sum(data1)
from (select substr('1101', rownum, 1) * power
(8, length('1101') - rownum) data1
from dual
connect by rownum <= length('1101'))
-----十六進(jìn)制轉(zhuǎn)換十進(jìn)制-----------------
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'))
注釋:
對(duì)其它進(jìn)制可以根據(jù)例子將power的底數(shù)改成相應(yīng)的進(jìn)制就可以了。
本文只是一個(gè)例子,大家可以把它封裝成一個(gè)通用函數(shù)進(jìn)行實(shí)用。
大家在試的時(shí)候?qū)⒗锩嫦鄳?yīng)的其它進(jìn)制的數(shù)值換成自己的數(shù)據(jù)就可以了(有多處)。