我在Oracle 11g中有一个表(包含数据),我需要使用Oracle SQLPlus来执行以下操作:
目标:将TEST1表中的列类型UDA1从number更改为varchar2。
TEST1
UDA1
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;
与索引有关(保留顺序),对吗?
create table temp_uda1 (test1 integer); insert into temp_uda1 values (1); alter table temp_uda1 add (test1_new varchar2(3)); update temp_uda1 set test1_new = to_char(test1); alter table temp_uda1 drop column test1 cascade constraints; alter table temp_uda1 rename column test1_new to test1;
如果列上有索引,则需要重新创建它。
请注意,如果旧列中的数字大于999,则更新将失败。如果这样做,则需要调整该varchar列的最大值
varchar