Oracle SQL 在包含数据时将列类型从 number 更改为 varchar2

2023-11-25

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

目标:更改列的类型TEST1在表中UDA1 from number to varchar2.

建议的方法:

  1. 备份表
  2. 将列设置为空
  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;

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


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 column

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle SQL 在包含数据时将列类型从 number 更改为 varchar2 的相关文章

随机推荐