巧用一條SQL 實現其它進製到十進位制轉換

2022-01-30 09:27:35 字數 1044 閱讀 8505

問:怎樣實現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的底數改成相應的進製就可以了。

SQL 如何實現一條sql語句插入1000行資料

用 sql的可程式設計性,作為測試資料用是吧 declare i int 申明乙個整形變數i set i 1 設定初始值為1 while i 1000 用 while 迴圈給定乙個迴圈結束條件小於1000 begin insert into tb user values user no cast i...

SQL彙總 一條sql實現分條件count

適當借鑑高手經驗,原帖忘記那裡了,很抱歉 當你需要查詢同時滿足乙個字段 兩個不同條件 的資料時,而且資料量又比較大,推薦使用以下方法,可以適當提高效率 示例如下 select d.channel id,count case when d.editor id 0 then 0 end as autoc...

用一條SQL語句寫出從第M條到第N條記錄的方法

1 從table 表中取出第 m 條到第 n 條的記錄 not in 版本 23 select topn m 1 4 from table 5where id notin select topm 1 id from table 67 8 從table表中取出第m到n條記錄 exists版本 910 ...