amm*_*eer 1 oracle type-conversion oracle11g
如何number在varchar2不删除表数据的情况下将列的DATA TYPE更改为?
Jus*_*ave 13
你不能.
但是,您可以使用新数据类型创建新列,迁移数据,删除旧列,并重命名新列.就像是
ALTER TABLE table_name
ADD( new_column_name varchar2(10) );
UPDATE table_name
SET new_column_name = to_char(old_column_name, <<some format>>);
ALTER TABLE table_name
DROP COLUMN old_column_name;
ALTER TABLE table_name
RENAME COLUMN new_column_name TO old_coulumn_name;
Run Code Online (Sandbox Code Playgroud)
如果你的代码取决于表中列的位置(你真的不应该有),你可以重命名表并在表上创建一个视图,其中包含暴露列中的列的表的原始名称.订购您的代码,直到您可以修复该错误的代码.
在修改列DATA TYPE之前,您必须首先处理现有行。
您可以执行以下步骤:
例如,
更改表 t add (col_new varchar2(50)); 更新 t set col_new = to_char(col_old); alter table t drop column col_old 级联约束; alter table t 将列 col_new 重命名为 col_old;
确保重新创建您拥有的所有必需索引。
您还可以尝试CTAS方法,即创建表作为选择。但是,以上是安全且优选的。