oracle可以直接修改表字段类型,但使用的时候有些细节需要注意,本文章仅正对number类型转换进行说明。
1.number转varchar2
当表中有数据且修改字段有不为空的时候,修改报错。报错提示ORA-01439:要修改数据类型,则要修改的列必须为空。
因此,当number要转成varchar2的时候必须把字段置空才行。
2.number转number(m,n)
number默认38位精度,整数位和小数位加起来等于38
number(m,n)表示整数位为m,小数位为n,加起来不能超过38
当表中有数据或者对于字段只要有一个不为空也会报错,哪怕长度仅为1,报错提示 ORA-01440:要减小精度或标度,则要修改的列必须为空
解释:这里有些人会觉得奇怪,认为表里面的数据满足修改后的精度那就可以修改,但实际上这里并不是看字段的数据,而是对修改前后的整数位和小数位都要不小于才能修改字段类型,否则就会报错
3.number(m1,n1)转number(m2,n2)
当m2>=m1>0,n2>=n1>=0是字段类型才会有修改成功,否则会报错,报错提示 ORA-01440:要减小精度或标度,则要修改的列必须为空。
验证脚步参考:
create table tmp_del_hegang_test_number
(id number(36,2));
insert into tmp_del_hegang_test_number
select 1.1 id from dual;
commit;
alter table tmp_del_hegang_test_number modify id number(35,2)
;
select * from tmp_del_hegang_test_number
;
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/jsjhegang/article/details/125762091
文章转载自吼吼哈嘿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




