Wht*_*sop 28 sql oracle oracle10g
我在oracle DB中有一个设计为varchar 的列详细信息,此DB现在用于客户,而某些行已经存储了数据.
现在我想将列详细信息更改为Clob列.什么是实现这一目标的聪明方法?
Kev*_*ton 72
(如上一个答案)和这里的代码:
ALTER TABLE atable
ADD (tmpdetails CLOB);
UPDATE atable SET tmpdetails=details;
COMMIT;
ALTER TABLE atable DROP COLUMN details;
ALTER TABLE atable
RENAME COLUMN tmpdetails TO details;
Run Code Online (Sandbox Code Playgroud)
Sus*_*tta 11
但这不会保持你的专栏的位置.它会将您的列移动到表的末尾.因此,如果您想保持列的位置,请按照以下步骤操作.
alter table atable add (tempdetails varchar2(4000));
update atable set tempdetails = details;
update atable set details = null; -- this is necessary to change data type
alter table atable modify details long; -- this is required because you can not change directly to clob.
alter table atable modify details clob;
update atable set details=tempdetails;
alter table atable drop column tempdetails;
Run Code Online (Sandbox Code Playgroud)
即使在更改数据类型之后,这也是保持列的数据和位置完整的方式.有关详细信息,请参见此处:http://www.oraclebin.com/2012/12/how-to-change-varchar2-to-clob-datatype.html