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

模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为

clob

1、假设要修改字段数值为空,则可以直接修改;​

可是发现如下错误:​

SQL> alter

​tablebatchintfloadlog

modify  (resultinfo

clob);

alter

​tablebatchintfloadlog

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 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;​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值