在网上很多资料都说oracle的int类型相当于number(38),也有少量说是10^126-1的,今天特意测试了下发现,两个说法都不对.一下是测试代码:
drop table tt3;
create table tt3(a int );
insert into tt3 values(999999999999999999999999999999999999999949999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
insert into tt3 values(999999999999999999999999999999999999999950000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
当执行第二条插入的时候报错,说明int能存的最大值就是第一条的值.这个值是:
999999999999999999999999999999999999999949999999999999999999999999999999999999999999999999999999999999999999999999999999999999
就是40个9后面接1个4再接85个9,总共126位.也就是 1E127-5E85-1 .
同样的,存储负数的时候:
insert into tt3 values(-999999999999999999999999999999999999999949999999999999999999999999999999999999999999999999999999999999999999999999999999999999);
insert into tt3 values(-999999999999999999999999999999999999999950000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
执行第二条插入负数的语句报错.
因此,可以总结出oracle中int数据类型的取值范围是-(1E127-5E85-1)至1E127-5E85-1.