oracle中int與number的區別(轉)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM