oracle本來就沒有int類型,為了與別的數據庫兼容,新增了int類型作為number類型的子集。
int類型只能存儲整數;
number可以存儲浮點數,也可以存儲整數;
number(8,1)存儲小數位為1位,總長度為8的浮點數,如果小數位數不足,則用0補全;
number(8)存儲總長度為8的整數;
int相當於number(22),存儲總長度為22的整數。
舉例說明:
--創建表結構
SQL> create table tab(id0 int,id1 number,id2 number(8,1),id3 number(8));
Table created
SQL>
--插入測試數據
SQL> insert into tab select 1,1.5,1.6,8 from dual;
1 row inserted
SQL> insert into tab select 1,1.55,1.6,8 from dual;
1 row inserted
SQL> insert into tab select 1,1.595,1,8 from dual;
1 row inserted
SQL> commit;
Commit complete
SQL> select * from tab;
ID0 ID1 ID2 ID3
---------- ---------- ---------- ---------
1 1.5 1.6 8
1 1.55 1.6 8
1 1.595 1.0 8
--查詢數據字典表dba_tab_columns
SQL> select table_name,column_name,data_type,data_length,data_precision,data_scale from dba_tab_columns a
2 where table_name='TAB'
3 and owner='NETMAX'
4 order by column_id;
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_LENGTH DATA_PRECISION DATA_SCALE
--------------- -------------- ----------------- ---------------- ----------- ----------
TAB ID0 NUMBER 22 0
TAB ID1 NUMBER 22
TAB ID2 NUMBER 22 8 1
TAB ID3 NUMBER 22 8 0
SQL>
在dba_tab_columns表中,
Data_type表示字段類型;
Data_length表示字段類型的長度;
Data_Precision表示字段類型的精度的總長度,如果為null,表示精度的總長度不固定,最長為Data_Length;
Data_scale表示字段類型的精度范圍,如果為0,表示只能存儲為整數,
如果為null,表示可以存儲整數或者浮點數,浮點數位數不確定,
如果為整數,表示存儲的精度位數。
查詢dba_tab_columns表,發現tab表中ID0字段類型int已經被轉換為number(22)。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ojuju10/archive/2009/09/21/4576446.aspx