今天,同事问我一个问题,一个字段定义原先是NUMBER(15,2),并且里面的数据都是整数,现在想改成NUMBER
做了一个测试:
SQL> desc b
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
COL1 NUMBER(15,2) Y
SQL> select * from b;
COL1
-----------------
SQL> insert into b values(12);
1 row inserted
SQL> insert into b values(11.11);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from b
2 ;
COL1
-----------------
12.00
11.11
SQL> alter table B modify COL1 NUMBER;
Table altered
SQL> select * from b;
COL1
----------
12
11.11
SQL>
可以看出,精度从小往大改是可以改的,以前是整数的改过来去掉小数位,以前是小数的,改过来之后还是小数
SQL> desc b
Name Type Nullable Default Comments
---- ------ -------- ------- --------
COL1 NUMBER Y
SQL> alter table B modify COL1 NUMBER(15,2);
alter table B modify COL1 NUMBER(15,2)
ORA-01440: 要减小精度或标度, 则要修改的列必须为空
SQL>
可以看出要使精度从大往小改ORACLE是不允许的
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7490392/viewspace-1037432/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7490392/viewspace-1037432/
本文记录了一次Oracle数据库字段类型调整的实践过程。原先字段为NUMBER(15,2),内部存储整数,尝试修改为纯NUMBER类型。实验结果显示,精度从小到大的调整可行,整数值在调整后移除小数部分,小数值则保持不变。然而,当尝试将字段精度从大调小时,Oracle数据库不允许此操作,除非该列为空。
1368

被折叠的 条评论
为什么被折叠?



