oracle修改字段类型由varchar2修改为clob类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle修改字段类型由varchar2修改为clob类型相关的知识,希望对你有一定的参考价值。

参考技术A 发现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 batchintfloadlog_temp  as select * from batchintfloadlog where 1=2; 

alter table batchintfloadlog_temp modify (resultinfo long); 

alter table batchintfloadlog_temp modify (resultinfo clob); 

insert into batchintfloadlog_temp select * from batchintfloadlog;

drop table batchintfloadlog; 

rename batchintfloadlog_temp to batchintfloadlog;

oracle中怎样修改varchar2字段为clob字段

前面的回答不对,varchar2字段是无法通过modify 直接修改为clob字段的。
原因是因为clob和blob字段在数据库中的存储方式与其他常用字段不同,所以无法直接转化。
如果需要转换,1可以先转换成long 再转换为clob。
2如果字段中有内容,建议先创建新clob字段,update数据后再改名字。
参考技术A 一:没有数据的话,直接修改alter table table_name modify var_col clob;
二:有数据的话,先创建一个表将表中数据备份出来,然后在将此列值类型更改掉,清空列值,然后在插入回来。

以上是关于oracle修改字段类型由varchar2修改为clob类型的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 当字段中有数据如何修改字段类型

oracle修改varchar2或nvarchar2类型的时间字段为DATE

oracle修改varchar2或nvarchar2类型的时间字段为DATE

oracle中怎样修改varchar2字段为clob字段

oracle如果要修改字段长度值一定没东西吗

oracle数据库之如何将blob类型转换为varchar2