[Oracle] 生产上表的列类型更新

由于粗心,数据库脚本生成的时候错将一个类型NUMBER(5)的字段类型改为 VARCHAR2(5)

直接进行表修改会报错,因为数据已经存在,不能进行更新:

ALTER TABLE 表名 MODIFY 表名.列名 NUMBER(5);

大体思路如下:
      将要更改类型的字段名改名以备份,然后添加一个与要更改类型的字段名同名的字段(原字段已经改名),然后更新数据,最后删除改名备份的字段。
以下操作在 Oracle 10.2.0.1.0 中通过。

/*修改原字段名*/
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
/*添加一个和原字段同名的字段*/
ALTER TABLE 表名 ADD 字段名  NUMBER(5);
/*
将原来的数据更新到新字段中
这是要注意,一定要显示进行数据类型转换(不同于MSSQL)
*/
UPDATE 表名 SET 字段名 = CAST(字段名1 AS NUMBER(5));
/*删除原来的备份字段*/
ALTER TABLE 表名 DROP COLUMN 字段名1;

参考:

http://www.cnblogs.com/LDaqiang/articles/1157998.html

http://blog.csdn.net/xzjjmaomao/article/details/6644088

原文地址:https://www.cnblogs.com/garinzhang/p/oracle_alter_column_type.html