`

oracle中查找Blob类型数据中的字符串

 
阅读更多

 

  前景回顾:    刚一个大MM 问我如何查询Blob类型数据的字符串.

  解决方案:    使用 dbms_lob.instr 和 CAST_TO_RAW可解决:

   示例:

    select * from tesu where dbms_lob.instr(msg,utl_raw.CAST_TO_RAW('darren'),1,1) >0.

  

   扩展:

    1), 插入: 可使用to_blob函数

                insert into tesu(msg)  values(to_blob('adddda')) ;

           还有一种是使用empty_blob()函数,先插入一个空的, 然后在进行插入值

          java使用jdbc, 简单,略.

     2). 更新: 还是使用to_blob

          update tesu set msg = to_blob('adddda')  where id =1;

 

     3)与clob的区别

      BLOB全称为二进制大型对象(Binary   Large   Object)。

                      它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节  

      CLOB全称为字符大型对象(Character   Large   Object)。它与LONG数据类型类似,

      只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集

      可存储的最大大小为4G字节

    4), 性能: 能不用尽量不用

           ???

    5), 其它

           a.  一个Blob/Clob字段包括lobindex和lobsegment

           b.  Lob缺省可以存放在表中(表字段),条件是:

               1.它的大小小于4kb

             2.并且在定义的时候没有使用(disable storage inrow)字句(缺省是enable)

                当lob大于4kb的时候它会被存放到lobsegment中

     c.    当lob存放在表中的时候,它可以被缓存,

                 对于它的操作效率远远高于存储在lobsegment中的lob(不用lobindex)

     d.   存储在lobsegment中的lob缺省不在缓冲区缓存,对于lob的读写都是物理IO,代价非常高,

                 所以对于大于4kb的lob字段千万不要频繁更新,效率非常低

     e. 存储在lobsegment中的lob可以在定义的时候指定使用cache(默认是nocache),

                 这对于中等大小的lob(比如几k~几十k)很有效果,减少物理IO

 

   备注一个不相关的:

        该MM在她的触发器中引用了自身表做了查询等操作,然后就报错啦..

        解决方法: 直接用当前记录就可以进行相应的操作,不要代入当前操作表. 

 

 

分享到:
评论

相关推荐

    Oracle数据库查找替换工具

    Oracle 数据库 查找替换工具 (*目前只支持Oracle) 在整个数据库中查找某个字符串。 支持字符串、CLOB、BLOB字段类型。 支持字符串替换功能。 可定义查找的表、字段、字段类型。 可同时查询多个字符串。

    Oracle 数据库查找替换工具

    可以在整个数据库中查找某个字符串。 支持 CHAR,VARCHAR NVARCHAR,CLOB,BLOB字段类型。 可批量查找,批量替换。 http://db.okof.net/dbr/

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    二、 Oracle的数据类型 类型 参数 描述 字符类型 char 1~2000字节 固定长度字符串,长度不够的用空格补充 varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char...

    Oracle Database 11g初学者指南--详细书签版

    1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 ...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    1.3 Oracle Database 11g的基本数据类型 1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储对象 1.5.1 视图 1.5.2 触发器 1.5.3 过程 1.5.4 函数 1.5.5 包 1.6 Oracle ...

    Direct Oracle Access v4.1.3 bcb6

    能够包含字符串值通配符,如JON%;还包含比较操作符,如>, <, NOT, BETWEEN, IN等。 Oracle监控器 ——该组件能够监控您Direct Oracle Access程序的数据库访问行为。可以显示每个行为的SQL、变量、时间戳、逝去时间...

    Oracle中instr和substr存储过程详解

    instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串。 用于查找内部大对象中的字符串的instr函数语法如下: dbms_lob.instr( lob_loc in blob, pattern in raw, offset in integer := 1; nth...

    jdbc连接数据库的方式2

    如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象...

    SQLProgress

    2、数据库的一般功能:SQL语句的导入、导出和打印,查找字符串,调色方案等。 3、数据库的高级功能:DBGrid报表产生(可将DBGrid中的数据变成大于7种文件格式,Field的调整,插入图片,插入项号)、DBGrid的打印,...

    SQLProgress v1.01.27

     2、数据库的一般功能:SQL语句的导入、导出和打印,查找字符串,调色方案等。  3、数据库的高级功能:DBGrid报表产生(可将DBGrid中的数据变成大于7种文件格式,Field的调整,插入图片,插入项号)、DBGrid的打印...

    SQLProgress 1.01.30A

    数据库的一般工具包含,SQL语句的导入、导出和打印,查找字符串,调色方案等。 数据库的高级工具包含,DBGrid报表产生(可将DBGrid中的数据变成7种文件格式,报表中可以进行调整Field,插入图片,插入项号...

    SQLProgress1.01.30

    数据库的一般工具包含,SQL语句的导入、导出和打印,查找字符串,调色方案等。 数据库的高级工具包含,DBGrid报表产生(可将DBGrid中的数据变成7种文件格式,报表中可以进行调整Field,插入图片,插入项号等操作)...

    SQLProgress1.01.31非最终版

    数据库的一般工具包含,SQL语句的导入、导出和打印,查找字符串,调色方案等。 数据库的高级工具包含,DBGrid报表产生(可将DBGrid中的数据变成7种文件格式,报表中可以进行调整Field,插入图片,插入项号等操作)...

    疯狂JAVA讲义

    9.6.4 使用MessageFormat处理包含占位符的字符串 349 9.6.5 使用类文件代替资源文件 350 9.6.6 使用NumberFormat格式化数字 350 9.6.7 使用DateFormat格式化日期 352 9.7 本章小结 355 本章练习 355 第10章 ...

Global site tag (gtag.js) - Google Analytics