Integer 和Number的區別

2021-09-01 03:49:29 字數 1187 閱讀 2930

建表的時候,如果是浮點數,一般設定為 number(m,n )[m為精度,n為小數字數,所以整數為m-n位], 整數設定為integer;

比如:create table abc

( a number(38,0),

b number(38)

c integer,

d number

)那麼a,b,c,d 分別有什麼區別呢?

a,b其實是一樣的,都是38位的範圍;

c是不是和a,b一樣呢?測試後是不一樣的,c的最大值可以達到9e125,顯然遠遠地大於38位的範圍;

d和a,b,c有什麼區別呢,首先d可以放小數,另外它的範圍同樣遠遠大於38位;

具體這a,b,c,d四種型別的明確差異,我也說不清楚,希望有專家把它解釋清楚,我這裡只是拋磚引玉。

以前我一直以為 integer=number(38,0) --38是number的最大精度

剛才無意中發現integer 是個超大的資料型別,最大可以表示為power(10,126)-1

也就是說這麼大的數字,大概需要多少個位元組呢,

因為乙個位元組最大表示256,那麼n個位元組最大表示power(256,n)>=power(10,126)

現在求這個n:解法是:

select log(256,10)*126 from dual

求得的解是 53, 也就是說,乙個integer型別最少使用53個位元組。

所以我覺得integer型別還是盡量少用,一般很少用到這麼大的數字;

特別是某些人對於boolean型別的處理;

因為oracle的表結構中沒有布林型別,所以很多人乾脆用integer 代替布林型別,這個感覺有點「奢侈」;

我一般都用char(1)表示布林型;'0'表示false,'1'表示true

另外,比如varchar2(200)這個型別,它是動態分配的,所以字串按實際使用的占用空間,但是integer卻是固定暫用了最少53個位元組,所以大部分時候,integer 型別還是不用為妙;

就算在pl/sql 裡;

定義變數的時候,也不要使用integer;

可以用binary_integer 或pls_integer ;11g裡還出了個新的整形,效率更高,叫******_integer,反正最好不用integer就是了。

效率測試下來:******_integer>pls_integer>binary_integer>integer;

關於資料庫number與integer型別的區別

引自 留意oracle中integer和number的區別 建表的時候,如果是浮點數,一般設定為 number m,n m為精度,n為小數字數,所以整數為m n位 整數設定為integer 比如 create table abc a number 38,0 b number 38 c integer...

Integer和Integer資料的大小比較

public class test else public class test1 else 通過測試發現,第乙個資料輸出i1 i2,第二個資料輸出i1 i2.原因是因為 在給integer賦值時,實際上是自動裝箱的過程,也就是呼叫了integer.valueof int 方法,當這個值大於等於 1...

Integer 和int的區別

1.int是基本的資料型別,直接存數值 2.integer是int的封裝類 integer 是物件,用乙個引用指向這個物件 integer 是乙個類,是int的擴充套件,定義了很多的轉換方法。3.int和integer都可以表示某乙個數值 4.int和integer不能夠互用,因為他們兩種不同的資料...