Oracle中如何修改已存在数据的列名的数据类型

在oracle中,如何修改已存在数据列名的数据类型

一般人直接在表结构设计这里修改,这里只适合修改列没有数据,可修改

那么,如何这个列是有数据,是怎么修改的呢?

直接修改会Oracle错误

第一步:先创建一个新列名,名字跟修改的名称一样(多了个1),数据类型改成要修改的(如varchar(100))

第二步:将原列名的数据备份到新列名中,执行赋值操作

--将旧列名的数据迁到新列名---
update TMS_DELIVERY_ITEM_BOX set ITEM_BILL1=ITEM_BILL

第三步:找到tables下columns下的旧列名,删除旧列名

第四步:找到table下columns下的新列名,重命名(去掉1)

第五步:检查数据表列名的数据和数据类型(查看)

 也可以单纯用SQL语句进行修改,如

/*修改原字段名name为name_tmp*/
alter table Dxc_Receive_Notice rename column ORDERNUM to ORDERNUM_TEMP;
/*增加一个和原字段名同名的字段name*/
alter table Dxc_Receive_Notice add ORDERNUM NUMBER(19,5);
/*将原字段name_tmp数据更新到增加的字段name*/
update Dxc_Receive_Notice set ORDERNUM=trim(ORDERNUM_TEMP);
/*更新完,删除原字段name_tmp*/
alter table tb drop column name_tmp;

参考网址: https://www.csdn.net/gather_28/MtTaQgwsNDg1Mi1ibG9n.html

原文地址:https://www.cnblogs.com/xielong/p/11021823.html