風之力

导航

[Oracle]利用SQL 實現其他進制到十進位轉換

 -----二進位轉換十進位-----------------

 

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'))

 

 

 

注釋:

對其他進制可以根據例子將power的底數改成相應的進制就可以了。

posted on 2009-10-26 15:35  ZY.Zhou  阅读(674)  评论(0编辑  收藏  举报