您好,欢迎访问一九零五行业门户网

Oracle数据库blob类型转换为varchar2

据说没有数据的时候可以直接转换,试过了也可以,但是一般都是由数据了才会去修改,麻烦产生,直接修改不了,只能通过函数来解决
据说没有数据的时候可以直接转换,试过了也可以,但是一般都是由数据了才会去修改,麻烦产生,直接修改不了,只能通过函数来解决;
总的思路是:创建临时字段b→将要转换的字段a放在临时字段中(使用函数转换)→删除a→将b名称改为a
创建转换函数
create or replace function blob_to_varchar (blob_in in blob)
return varchar2
is
v_varchar varchar2(2000);
v_start pls_integer := 1;
v_buffer pls_integer := 2000;
begin
if dbms_lob.getlength(blob_in) is null then
return empty_clob();
end if;
dbms_output.put_line('test:' || ceil(dbms_lob.getlength(blob_in)));
for i in 1..ceil(dbms_lob.getlength(blob_in) / v_buffer)
loop
v_varchar := utl_raw.cast_to_varchar2(utl_raw.convert(dbms_lob.substr(blob_in, v_buffer, v_start),'american_the netherlands.utf8', 'american_the netherlands.utf8'));
v_start := v_start + v_buffer;
end loop;
return v_varchar;
end blob_to_varchar;
开始修改表数据:
alter table requestion add introduce_temp varchar2(2000);
update requestion set introduce_temp=blob_to_varchar(introduce);
alter table requestion drop column introduce;
alter table requestion rename column introduce_temp to introduce;
drop function blob_to_varchar;
这个过程中可能会出现乱码问题,需要调整下编码,,也就是红色部分,所有建议先执行完绿色部分,看看编码是否对再执行蓝色部分代码
当然,如果blob转换成varchar的函数还需要的话就不要删除了
其它类似信息

推荐信息