ORACLE中用一條SQL實現其它進制到十進制的轉換
導讀:眾所周知,在計算機中各種信息都是以數的進制的形式表現出來的,其中有二進制、八進制、十進制等等,下文為大家介紹ORACLE中用一條SQL實現其它進制到十進制的轉換,這種方法是將所有的進制統一為十進制。
對其它進制可以根據例子將power的底數改成相應的進制就可以了。
本文只是一個例子,大家可以把它封裝成一個通用函數進行實用。
大家在試的時候將里面相應的其它進制的數值換成自己的數據就可以了(有多處)。
-----二進制轉換十進制-----------------
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'))
十進制是我們比較熟悉的一種進制方法,應用的也比較多,所以將其他的進制轉化為十進制,便于我們的操作,也符合我們的操作習慣,上文中介紹的轉化方法相信對大家都是很有用的。
【編輯推薦】