ORACLE中用一條SQL實(shí)現(xiàn)其它進(jìn)制到十進(jìn)制的轉(zhuǎn)換
導(dǎo)讀:眾所周知,在計(jì)算機(jī)中各種信息都是以數(shù)的進(jìn)制的形式表現(xiàn)出來(lái)的,其中有二進(jìn)制、八進(jìn)制、十進(jìn)制等等,下文為大家介紹ORACLE中用一條SQL實(shí)現(xiàn)其它進(jìn)制到十進(jìn)制的轉(zhuǎn)換,這種方法是將所有的進(jìn)制統(tǒng)一為十進(jìn)制。
對(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ù)就可以了(有多處)。
-----二進(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'))
十進(jìn)制是我們比較熟悉的一種進(jìn)制方法,應(yīng)用的也比較多,所以將其他的進(jìn)制轉(zhuǎn)化為十進(jìn)制,便于我們的操作,也符合我們的操作習(xí)慣,上文中介紹的轉(zhuǎn)化方法相信對(duì)大家都是很有用的。
【編輯推薦】