小编典典

Oracle SQL将包含数据的列类型从数字更改为varchar2

sql

我在Oracle 11g中有一个表(包含数据),我需要使用Oracle SQLPlus来执行以下操作:

目标:将TEST1表中的列类型UDA1number更改为varchar2

建议方法:

  1. 备份表
  2. 将列设置为null
  3. 变更资料类型
  4. 恢复值

以下无效。

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;

与索引有关(保留顺序),对吗?


阅读 313

收藏
2021-03-17

共1个答案

小编典典

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列的最大值

2021-03-17