【Oracle】Oracle中字段定义为number(12,2)是什么意思

number(12,2)这个字段定义表达式中:

12代表此字段一共有12个有效数位,其中有2个是小数数位,于是能用于整数的数位是12-2=10个。

因此,12-2=10表明这个字段最多能容纳10位的整数,多1位都不行;2表明这个字段最多只能容纳2位的小数,多了就会截去(四舍五入方式),少了没问题。

 

下面是实验过程,用以验证上面做出的论断:

【建表】

SQL> create table test01(
  2  v number(12,2) );

表已创建。

【插值及查询】

SQL> insert into test01(v) values('1.1');

已创建 1 行。

SQL> insert into test01(v) values('1.12');

已创建 1 行。

SQL> insert into test01(v) values('1.123');

已创建 1 行。

SQL> insert into test01(v) values('123456789012');
insert into test01(v) values('123456789012')
                             *1 行出现错误:
ORA-01438: 值大于为此列指定的允许精度


SQL> insert into test01(v) values('1234567890');

已创建 1 行。

SQL> select * from test01;

         V
----------
       1.1
      1.12
      1.12
1234567890

SQL> insert into test01(v) values('12345678901');
insert into test01(v) values('12345678901')
                             *1 行出现错误:
ORA-01438: 值大于为此列指定的允许精度


SQL>
SQL> insert into test01(v) values('1.235');

已创建 1 行。

SQL> insert into test01(v) values('1.246');

已创建 1 行。

SQL> select * from test01;

         V
----------
       1.1
      1.12
      1.12
1234567890
      1.24
      1.25

已选择6行。

END

posted @ 2022-02-12 21:06  逆火狂飙  阅读(509)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东