低精度转高精度直接
--修改单个字段
ALTER TABLE 表名 modify(字段名1 新属性);
--修改多个
ALTER TABLE 表名 modify (字段名1 新属性,字段名2 新属性);
如果高精度转低精度会报错如下: ORA-01440:要减小精度和标准,则要修改的列必须为空
两种方法
1.如果修改的字段比较多,可以考虑先备份表,再转移数据。
--备份:
create table 备份表名 as select * from 原始表名;
--删除原始表内的数据:
delete from 原始表名;
--修改表结构: 如要修改多个参考上面
alter table productinfo modify(字段名1 新属性);
--还原表数据:
insert into productinfo select * from 备份表;
上述方法如果在只修改单一字段的话会转移不必要的数据,可以参考方法2.
2.如果修改单一字段,可以将字段重命名,再新命名个原始名,最后转移数据。
--重命名字段
ALTER TABLE 表名 RENAME COLUMN 原始字段名 TO 备份字段名;
--创建新字段名
ALTER TABLE 表名 ADD COLUMN 原始字段名 原始字段名的新属性;
--转移数据,将原始数据以新属性的格式存储
UPDATE 表名 SET 原始字段名 = CAST(备份字段名 原始字段名的新属性);
--删除备份字段
ALTER 表名 DROP COLUMN 备份字段;