请教各位大大,今天看资料发现
1234567.89 Number(6) 出错,这是为什么呢?如果理解为1234567.89的整数部分大于6,所以出错的话,那么1234567.89 Number(5,-2)为什么能输出1234600呢,1234567.89的整数部分不是也大于5吗?是因为(5,-2)可以变相理解为整数部分为7吗?还有个问题
1234567.89 Number(7,2) 出错 为什么会出错呢?整数部分7,小数精确到2,不是应该输出1234567.89吗?
1234567.89 Number(6) 出错,这是为什么呢?如果理解为1234567.89的整数部分大于6,所以出错的话,那么1234567.89 Number(5,-2)为什么能输出1234600呢,1234567.89的整数部分不是也大于5吗?是因为(5,-2)可以变相理解为整数部分为7吗?还有个问题
1234567.89 Number(7,2) 出错 为什么会出错呢?整数部分7,小数精确到2,不是应该输出1234567.89吗?
SQL> insert into t1(col1) values(1234567.89);
insert into t1(col1) values(1234567.89)
*
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
SQL> insert into t1(col1) values(123456.89); --小数部分取整 进位到个位 6变71 row created.SQL> select * from t1; COL1 COL2 COL3
---------- ---------- ----------
123457SQL> insert into t1(col2) values(1234567.89); --这里我的理解是这样的 number(5,-2) 整数部分的位数是5-(-2)=7 -2代表向整数部分方向取整2位 因此十位上的6被取整进一 百位上的5变6了1 row created.SQL> select * from t1; COL1 COL2 COL3
---------- ---------- ----------
123457
1234600
SQL> insert into t1(col3) values(12345.89);1 row created.SQL> insert into t1(col3) values(123456.89);--整数部分和小数部分6+2=8了 超过7 所以不行
insert into t1(col3) values(123456.89)
*
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
SQL> select * from t1; COL1 COL2 COL3
---------- ---------- ----------
123457
1234600
12345.89