不行啊 1L
我们提供的服务有:网站制作、成都网站制作、微信公众号开发、网站优化、网站认证、桐庐ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的桐庐网站制作公司
还是能向数据库添加非整数数据啊
oracle会将integer转换成number类型的
oracle本身只有number这个数值数据类型啊
ROUND(12.01, 0) = 12
ROUND(12.51, 0) = 13
TRUNCATE(12.01, 0) = 12
TRUNCATE(12.51, 0) = 12
直接将栏位数据类型定义为number(18,4)
例如:
create table test1
(a number(18,4));
insert into test1
values(0.03125 );
insert into test1
values(0.12 );
insert into test1
values(1.12 );
select * from test1;
结果:
1 0.0313
2 0.1200
3 1.1200
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)。