oracle varchar2 为啥改不成clob

Posted

tags:

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

varchar2可以改成clob,但是需要迂回更改,不可以直接更改。

可用如下方法修改:

1、创建一个新字段为clob类型。

alter table test add name1 clob;

2、将原来varchar2字段中的数据存放到clob字段中。

 update test set name1=to_char(name);
 commit;

3、删除原有的varchar2字段。

alter table test drop column name;

4、将clob的字段名改为原来的varchar2字段名。

alter table test rename column name1 to name;

这样就可以实现将varchar2改成clob了。

参考技术A clob一般用来存储字符型大对象
blob用来存储二进制大对象
可以直接把varchar2改为clob
但表里必须没有数据本回答被提问者采纳

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的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Oracle中表列由VARCHAR2类型改成CLOB

Oracle:将 VARCHAR2 列更改为 CLOB

oracle CLOB/BLOB to varchar2

Oracle的CLOB大数据字段类型(转)