主要是用来存储大量数据的数据库字段,最大可以存储4G字节的非结构化数据。主要介绍字符类型和二进制文件类型LOB数据的存储,单独

三,大对象数据的读取和操作:DBMS_LOB包

DBMS_LOB包:包含处理大对象的过程和函数

/*

insert into tlob values(1,'Gene','CLOB大对象列',empty_blob(),bfilename('MYDIR','IMG_0210.JPG'));

insert into tlob values(2,'Jack','CLOB大对象列',empty_blob(),bfilename('MYDIR','IMG_0210.JPG'));

insert into tlob values(3,'Mary','大对象列CLOB',empty_blob(),bfilename('MYDIR','IMG_0210.JPG'));

*/

1,读取大对象数据的过程和函数

①:DBMS_LOB.Read():从LOB数据中读取指定长度数据到缓冲区的过程。

DBMS_LOB.Read(LOB数据,指定长度,起始位置,存储返回LOB类型值变量);

例子:

Declare

varC clob;

vRStr varchar2(1000);

ln number(4);

Strt number(4);

Begin

select resume into varC from tlob where no = 1;

ln := DBMS_LOB.GetLength(varC);

Strt := 1;

DBMS_LOB.Read(varC, ln, Strt, vRStr);

DBMS_output.put_line('Return: '||vRStr);

End;

②:DBMS_LOB.SubStr():从LOB数据中提取子字符串的函数。

DBMS_LOB.SubStr(LOB数据,指定提取长度,提取起始位置):

例子:

Declare

varC clob;

vRStr varchar2(1000);

ln number(4);

Strt number(4);

Begin

select resume into varC from tlob where no = 1;

ln := 4;

Strt := 1;

vRStr := DBMS_LOB.SubStr(varC, ln, Strt);

DBMS_output.put_line('结果为: '||vRStr);

End;

③:DBMS_LOB.InStr():从LOB数据中查找子字符串位置的函数。

DBMS_LOB.InStr(LOB数据, 子字符串);

例子:

Declare

varC clob;

vSubStr varchar2(1000);

vRStr varchar2(1000);

ln number(4);

Begin

select resume into varC from tlob where no = 1;

vSubStr := '大对象';

ln := DBMS_LOB.InStr(varC,vSubStr);

DBMS_output.put_line('位置为: '||ln);

vRStr := DBMS_LOB.SubStr(varC, Length(vSubStr), ln);

DBMS_output.put_line('位置为'||ln||'长度为'||Length(vSubStr)||'的子字符串为:'||vRStr);

End;

④:DBMS_LOB.GetLength():返回指定LOB数据的长度的函数。

DBMS_LOB.GetLength(LOB数据);

⑤:DBMS_LOB.Compare():比较二个大对象是否相等。返回数值0为相等,-1为不相等。

DBMS_LOB.Compare(LOB数据,LOB数据);

例子:

Declare

varC1 clob;

varC2 clob;

varC3 clob;

ln number(4);

Begin

select resume into varC1 from tlob where no = 1;

select resume into varC2 from tlob where no = 2;

select resume into varC3 from tlob where no = 3;

ln := DBMS_LOB.Compare(varC1,varC1);

DBMS_output.put_line('比较的结果为: '||ln);

ln := DBMS_LOB.Compare(varC2,varC3);

DBMS_output.put_line('比较的结果为: '||ln);

End;

2,操作大对象数据的过程

操作会改变数据库中原有数据,需要加上Updata锁锁上指定数据列,修改完后提交事务。

①:DBMS_LOB.Write():将指定数量的数据写入LOB的过程。

DBMS_LOB.Write(被写入LOB, 写入长度(指写入LOB数据),写入起始位置(指被写入LOB),写入LOB数据);

例子:

Declare

varC clob;

vWStr varchar2(1000);

vStrt number(4);

ln number(4);

Begin

vWStr := 'CLOB';

ln := Length(vWStr);

vStrt := 5;

select resume into varC from tlob where no = 1 FOR UPDATE;

DBMS_LOB.Write(varC, ln, vStrt, vWStr);

DBMS_output.put_line('改写结果为: '||varC);

Commit;

End;

②:DBMS_LOB.Append():将指定的LOB数据追加到指定的LOB数据后的过程。

DBMS_LOB.Append(LOB数据,LOB数据);

例子:

Declare

varC clob;

vAStr varchar2(1000);

Begin

vAStr := ',这是大对象列';

select resume into varC from tlob where no = 1 FOR UPDATE;

DBMS_LOB.Append(varC, vAStr);

commit;

DBMS_output.put_line('追加结果为: '||varC);

End;

③:DBMS_LOB.Erase():删除LOB数据中指定位置的部分数据的过程;

DBMS_LOB.Erase(LOB数据,指定删除长度, 开始删除位置);

例子:

Declare

varC clob;

ln number(4);

strt number(4);

Begin

ln := 1;

strt := 5;

select resume into varC from tlob where no = 1 FOR UPDATE;

DBMS_LOB.Erase(varC, ln, strt);

commit;

DBMS_output.put_line('擦除结果为: '||varC);

End;

④:DBMS_LOB.Trim():截断LOB数据中从第一位置开始指定长度的部分数据的过程;

DBMS_LOB.Trim(LOB数据,,截断长度);

例子:

Declare

varC clob;

ln number(4);

Begin

ln := 4;

select resume into varC from tlob where no = 1 FOR UPDATE;

DBMS_LOB.Trim(varC, ln);

COMMIT;

DBMS_output.put_line('截断结果为: '||varC);

End;

⑤:DBMS_LOB.Copy():从指定位置开始将源LOB复制到目标LOB;

DBMS_LOB.Copy(源LOB,目标LOB,复制源LOB长度,复制到目标LOB开始位置,复制源LOB开始位置)

例子:

Declare

vDEST_LOB clob;

vSRC_LOB clob;

AMOUNT number;

DEST_OFFSET number;

SRC_OFFSET number;

Begin

select resume into vDEST_LOB from tlob where no = 1 FOR UPDATE;

select resume into vSRC_LOB from tlob where no = 2 ;

AMOUNT := DBMS_LOB.GetLength(vSRC_LOB);

DEST_OFFSET := DBMS_LOB.GetLength(vDEST_LOB)+1;

SRC_OFFSET := 1;

DBMS_LOB.Copy(vDEST_LOB, vSRC_LOB, AMOUNT, DEST_OFFSET, SRC_OFFSET);

DBMS_output.put_line('拷贝结果为: '||vDEST_LOB);

End;

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql lob 操作_Oracle中LOB 处理相关推荐

  1. oracle定时向mysql取数据_Oracle中通过Job实现定时同步两个数据表之间的数据

    摘要:之前项目中用的触发器来实现数据解析,但是最近客户反应,会报错,所以我们从新设计了一下,通过Oracle里面的Job来解决这一问题,这样就不会对原来的数据表做操作,只对临时表操作,就不会对客户那边 ...

  2. 在mysql的操作界面中,如何清屏幕

    1.快捷键:Ctrl+L2.通过执行SHELL命令: \! clear实际上 \! 用来执行操作系统的shell命令,不仅是clear,其他命令也可以.shell命令执行完成后,会返回mysql Us ...

  3. django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  4. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  5. oracle中LOB字段相关概念(自动创建LOB索引段和重建索引方法)

    OBs,或Large Objects字段,是Oracle中用于处理存储非字符数据推荐的一种字段类型,例如mp3,video,图片,和long字符串数据.二进制大对象,或BLOBs,字符大对象,或CLO ...

  6. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  7. Openstack技术\在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server

    MySQL部署 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server. 操作步骤: 搜索mysql镜像 拉取mysql镜像 创建容器 操作容器中的mysql 容器 ...

  8. Linux中mysql的操作

    一.mysql服务操作 二.数据库操作 三.数据表操作 四.修改表结构 五.数据备份和恢复 六.卸载数据库 转载于:https://www.cnblogs.com/clover-siyecao/p/5 ...

  9. Mybatis操作Oracle中的Clob和Blob字段

    文章目录 Mybatis操作Oracle中的Clob和Blob字段 [ 我测试用的Mybatis Plus ] A.数据准备 A-1. Oracle中创建测试的表结构:Byte_Array_Test, ...

  10. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...

最新文章

  1. php网站漏洞检测对sql注入漏洞防护
  2. Vue3 核心技能从入门到难点攻破,看这一篇就够了!
  3. 关于定时执行任务的解决方法,PendingIntent alarm braocastRecevier等等
  4. Leet Code之Number of 1 bits
  5. discuz forums.inc.php,【Discuz】积分机制实现解析
  6. 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)
  7. mysql.data.dll win10_【MySQL】Windows10下安装
  8. 学习笔记-记ActiveMQ学习摘录与心得(二)
  9. linux绑定team网卡,linux 实现双网卡绑定单个IP——team篇
  10. 03MyBatis动态sql
  11. 孙鑫-MFC笔记九--菜单编程
  12. 如何解压 GZ 文件
  13. linux 查看内存 单位,linux ps 内存 单位
  14. 【PMP】PMBOK 笔记 第6章 项目时间管理
  15. PAT 1006 解析
  16. 加班者的王者语录(改编)
  17. leetcode【困难】460、LFU 缓存
  18. SparkMLlib简介
  19. 经典算法之直接插入排序法
  20. 4月19日读书笔记——第二章序列构成的数组(1)

热门文章

  1. C++ 判断某个年份的生肖
  2. git的基本使用[远程库库操作 - GitHub]
  3. linux批量解压压缩包
  4. 银河麒麟SP1解压压缩包后文件名称乱码
  5. 用计算机还原魔方,谷歌超级计算机还原魔方最多只需20步(图)
  6. oracle exclude table,EXPDP/IMPDP:关于EXCLUDE参数
  7. 系统分析员应具备的能力
  8. 转载《五大免费采集器哪个好,火车头,海纳,ET,三人行,狂人采集 》
  9. Show, Control and Tell: A Framework for Generating Controllable and Grounded Captions
  10. 视觉SLAM笔记(64) 八叉树地图