oracle修改字段类型由varchar2修改为clob类型 |
您所在的位置:网站首页 › oracle数据库clob字段类型 › oracle修改字段类型由varchar2修改为clob类型 |
模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为 clob 1、假设要修改字段数值为空,则可以直接修改; 可是发现如下错误: SQL> alter table batchintfloadlog modify (resultinfo clob); alter table batchintfloadlog modify (resultinfo clob); ORA-22858: 数据类型的更改无效 经查找资料:可参见:http://www.360doc.com/content/12/0627/10/7662927_220705696.shtml, 发现clob类型比较特殊,和其他字段类型不同,不可以从其他字段类型直接转换为clob(blob也一样), 可以通过long类型作为中间转换的桥梁,即先将varchar2转换为long,然后再将long转换为clob,即可。 SQL> alter table test modify (loc long ); Table altered SQL> alter table test modify (loc clob ); Table altered 2、假设要修改字段有数据,则可以使用以下两种方法; 方法一: alter table batchintfloadlog rename column resultinfo to resultinfo_temp; alter table batchintfloadlog add resultinfo clob; update batchintfloadlog set resultinfo=trim(resultinfo_temp); alter table batchintfloadlog drop column resultinfo_temp; 方法二: create table CJ_INTERFACELOG_COPY as select * from CJ_INTERFACELOG where 1=2; alter table CJ_INTERFACELOG_COPY modify (BIOGRAPHY long); alter table CJ_INTERFACELOG_COPY modify (BIOGRAPHY clob); alter table CJ_INTERFACELOG_COPY modify (JOINGINSENG long); alter table CJ_INTERFACELOG_COPY modify (JOINGINSENG clob); insert into CJ_INTERFACELOG_COPY select * from CJ_INTERFACELOG; drop table CJ_INTERFACELOG; ALTER TABLE CJ_INTERFACELOG_COPY rename to CJ_INTERFACELOG; |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |