oracle blob 转 varchar2,oracle varchar2与clob、blob互转
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。
Blob转varchar2:
长度小于2000的:
Convert(Utl_Raw.Cast_To_Varchar2(A.Photodata), 'utf8', 'zhs16gbk')
长度大于2000:
Create Or Replace Function Blob_To_Varchar (Blob_In In Blob) Return Varchar2
Is
V_Varchar Varchar2(4000);
V_Start Pls_Integer := 1;
V_Buffer Pls_Integer := 4000;
Begin
If Dbms_Lob.Getlength(Blob_In) Is Null Then
Return '';
End If;
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),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
V_Varchar := Utl_Raw.Cast_To_Varchar2(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start));
V_Start := V_Start + V_Buffer;
End Loop;
Return V_Varchar;
End Blob_To_Varchar;
varchar2Blob 注意varchar2的最大长度是4000,超过的话转换会出现问题,只出现最后面的部分。中文还没尝试过。
CREATE OR REPLACE FUNCTION V2B(l_var IN varchar2) RETURN BLOB IS
c_clob CLOB := to_clob(l_var);
b_blob BLOB;
b_len number := dbms_lob.getlength(c_clob);
b_offset NUMBER := 1;
c_offset NUMBER := 1;
c_amount INTEGER := DBMS_LOB.lobmaxsize;
b_csid NUMBER := DBMS_LOB.default_csid;
lang_ctx INTEGER := DBMS_LOB.default_lang_ctx;
warning INTEGER;
BEGIN
if b_len > 0 then
DBMS_LOB.createtemporary(b_blob, TRUE);
DBMS_LOB.OPEN(b_blob, DBMS_LOB.lob_readwrite);
DBMS_LOB.convertToBlob(b_blob,
c_clob,
c_amount,
b_offset,
c_offset,
b_csid,
lang_ctx,
warning);
else
select empty_blob() into b_blob from dual;
end if;
RETURN b_blob;
END V2B;
CLOB转Varchar2 to_char(substr(mw.context_,1,1000)) 这个是oracle自带的
CLOB的列可以直接放varchar属性的数据,这里就不列出转换方法
oracle blob 转 varchar2,oracle varchar2与clob、blob互转相关推荐
- oracle里面的long,long raw,raw,clob,blob区别
ORACLE LOB类型提供了BFILE.BLOB.CLOB.NCLOB让我们来存储最大尺寸有4G的无结构的数据块(例如:文本.图像.声音和视频等).并且它们右以以高效的.任意的和分段操作的方式存取数 ...
- oracle修改表字段从varchar2(4000)为clob
oracle修改表字段从varchar2(4000)为clob (原因varchar2(4000)不够用了) 1.临时表存数据 2.删原表数据,修改字段类型为long,才能再改为clob 3.导回数据 ...
- oracle修改clob值,oracle修改字段类型由varchar2修改为clob类型
模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为 clob 1.假设要修改字段数值为空,则可以直接修改: 可是发现如下错误: ...
- Oracle Varchar2 字段转成Clob字段
为什么80%的码农都做不了架构师?>>> 今天碰到一个问题,想将oracle数据库的varchar 字段修改为 clob 字段,先开始直接修改是报错的,后来搜索资料才知道需要先 ...
- 使用JDBC操作基于Oracle的CLOB,BLOB字段类型
转载至程式先锋技术维客[url]www.javabiz.cn[/url] 先来看看两种LOB类型的主要区别: CLOB 表示Character LOB (字符LOB) 它可以存储大量的字符数据. B ...
- oracle数据按条件清表,ociuldr v2.1 支持CLOB,BLOB数据类型
1.dcba的ociuldr工具 ociuldr这个工具初始是由dcba开发的,用的是v7版的oci函数库 目的是完成导出Oracle中的数据到文本文件这样的功能 这个工具流传的非常广 详细介绍可以参 ...
- 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
[在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别 ] 1.CHAR(size)和VARCHAR(size)的区别 CHAR为定长的字段,最 ...
- oracle blob类型在,Oracle blob类型 实践
Oracle blob类型 实践 BLOB的含义 BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 在计算机中,BLOB常常是数据库中用来存储二进制 ...
- java oracle 图片_JAVA读取Oracle中的blob图片字段并显示
JAVA读取Oracle中的blob图片字段并显示 近期,在给客户做一个Demo页面时,需要用JAVA读取Oracle中的blob图片字段并显示,在此过程中,遇到一些问题,例如:连接Oracle数据库 ...
- oracle将其他字段类型改为clob类型方法
oracle将其他字段类型改为clob类型方法 FIELD_INSTANCE 表名 FIELD_STRING_VALUE 字段名 第一步:添加一个clob类型的字段 alter table FIELD ...
最新文章
- My deep learning reading list
- window之hosts
- python实例变量初始化_Python – 应该在__init__中初始化所有成员变量
- IntelliJ IDEA——数据库集成工具(Database)的使用
- 论坛模板php,php论坛
- Learn Python 014: Funtions
- leetcode-Combinations 复习复习排列组合
- 多线程之旅七——GUI线程模型,消息的投递(post)与处理
- 查看系统中支持CUDA的设备数量和属性---deviceQuery示例
- linux导出日志命令_Linux中的导出命令
- 用PS去掉图片中的文字
- 推荐几款程序员值得拥有的写文档工具
- c语言编译bss和data,深入理解BSS段与data段的区别
- JavaBean字段防止非空赋值
- 快读与快输(读入优化与输出优化、QIO优化)
- 精进1-如何反思 by采铜
- 同城双活与异地多活架构分析
- Xcode9点击对象跳转
- 五、伊森商城 前端基础-Vue v-on 事件修饰符 按键修饰符 v-for v-if 和v-show v-else和v-else-if p24
- 预告|2022 星策 Summit 企业数智化转型论坛议程公布!