原数据表中金额对应的数据类型为number(16,2),先要改为number(16,5),该怎么改?

原数据表中金额类型保留两位小数的精度,现需要保留五位小数,我试着用alter table xxxx modify(column number(16,5)),可是这种方法需要数据列为空,不知该怎么修改?求大神解答,另外,对于原始数据,我又该如何将小数位数补齐呢?

  • 不能改。
  • 如果表暂时不用,可以创建一个新表后把数据迁移过去。注意有可能会溢出的问题
  • 后三位小数必然是000.无法补齐

补起没戏,本来就没有的东西

----随机新建一张表(金额保留两位有效数字)
create table lhz_test(id varchar2(3),money number(16,2));
----随便插几组值
insert into lhz_test values('001',2534);
insert into lhz_test values('002',343363463.34);
insert into lhz_test values('003',5634534.12);
insert into lhz_test values('004',979789.67);
----查看原始数据
select * from lhz_test;
----新增一列,使得精度保留五位有效数字
alter table lhz_test add (salary number(16,5));
----将原数据复制到新增列中
update lhz_test a set a.salary=(select b.money from lhz_test b where a.id=b.id);
----删除原数据列
alter table lhz_test drop column money;
----将新增列的列名改为原数据列名
alter table lhz_test rename column salary to money;
----查看表结构
desc lhz_test;