Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL zum Ändern des Spaltentyps von Zahl in varchar2, während er Daten enthält

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;

Wenn es einen Index für die Spalte gab, müssen Sie ihn neu erstellen.

Beachten Sie, dass die Aktualisierung fehlschlägt, wenn Sie Zahlen in der alten Spalte haben, die größer als 999 sind. Wenn Sie dies tun, müssen Sie den Maximalwert für varchar anpassen Spalte