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

版权声明:本文为qingxinblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qingxinblog/articles/3363937.html