我有一个包含数据的Oracle 11g表,需要使用Oracle SQLPlus执行以下操作:
目标: 将表UDA1
中列TEST1
的类型从number
更改为varchar2
。
建议方法:
- 备份表
- 将列设置为空
- 更改数据类型
- 恢复值
以下方法无效。
create table temp_uda1 AS (select * from UDA1);
update UDA1 set TEST1 = null;
commit;
alter table UDA1 modify TEST1 varchar2(3);
insert into UDA1(TEST1)
select cast(TEST1 as varchar2(3)) from temp_uda1;
commit;
跟索引有关系(为了保留顺序),是吗?
insert
语句需要改成update
。 - Colin 't Hart