`

dbms_lob 的 instr和substr

 
阅读更多
dbms_lob包学习笔记之三:instr和substr存储过程

http://wwwwwfco.itpub.net/post/5073/27882

instr和substr存储过程,分析内部大对象的内容




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

dbms_lob.instr(
lob_loc in clob character set any_cs,
pattern in varchar2 character set lob_loc%charset,
offset in integer:=1,
nth in integer := 1)
return integer;

lob_loc为内部大对象的定位器
pattern是要匹配的模式
offset是要搜索匹配文件的开始位置
nth是要进行的第N次匹配

substr函数
substr函数用于从大对象中抽取指定数码的字节。当我们只需要大对象的一部分时,通常使用这个函数。
操作内部大对象的substr函数语法如下:
dbms_lob.substr(
  lob_loc in blob,
  amount in integer := 32767,
  offset in integer := 1)
return raw;

dbms_lob.substr(
  lob_loc in clob character set any_cs,
  amount in integer := 32767,
  offset in integer := 1)
return varchar2 character set lob_loc%charset;
其中各个参数的含义如下:
lob_loc是substr函数要操作的大型对象定位器
amount是要从大型对象中抽取的字节数
offset是指从大型对象的什么位置开始抽取数据。
如果从大型对象中抽取数据成功,则这个函数返回一个 raw 值。如果有一下情况,则返回null:
1 任何输入参数尾null
2 amount < 1
3 amount > 32767
4 offset < 1
5 offset > LOBMAXSIZE
示例如下:

declare
   source_lob clob;
   pattern varchar2(6) := 'Oracle';
   start_location integer := 1;
   nth_occurrence integer := 1;
   position integer;
   buffer varchar2(100);
begin
   select clob_locator into source_lob from mylobs where lob_index = 4;
   position := dbms_lob.instr(source_lob, pattern, start_location, nth_occurrence);
   dbms_output.put_line('The first occurrence starts at position:' || position);
  
   nth_occurrence := 2;
   select clob_locator into source_lob from mylobs where lob_index = 4;
   position := dbms_lob.instr(source_lob, pattern, start_location, nth_occurrence);
   dbms_output.put_line('The first occurrence starts at position:' || position);
  
   select clob_locator into source_lob from mylobs where lob_index = 5;
   buffer := dbms_lob.substr(source_lob, 9, start_location);
   dbms_output.put_line('The substring extracted is: ' || buffer);
end;
/
The first occurrence starts at position:8
The first occurrence starts at position:24
The substring extracted is: Oracle 9i

PL/SQL 过程已成功完成。
分享到:
评论

相关推荐

    oracle dbms_lob

    通过阅读如“Oracle中的包――DBMS_LOB(一).pdf”、“ORACLE LOB大对象处理.pdf”和“DBMS_LOB包的使用.pdf”等资料,可以深入理解这些概念,并通过实践来熟练掌握。同时,“dbms_lob包学习笔记之二:append和...

    Oracle中instr和substr存储过程详解

    instr和substr存储过程,分析内部大对象的内容 instr函数 instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串。 用于查找内部大对象中的字符串的instr函数语法如下: dbms_lob.instr( lob_...

    关于oracle中clob字段查询慢的问题及解决方法

    为了解决这个问题,可以使用Oracle提供的DBMS_LOB包中的函数,如DBMS_LOB.SUBSTR和DBMS_LOB.INSTR。DBMS_LOB.SUBSTR用于提取CLOB字段的一部分,DBMS_LOB.INSTR则可以在CLOB中查找指定子串的位置。例如: ```sql ...

    使用PLSQL开发XML PUBLISHER报表的步骤

    xmlstr := dbms_lob.substr(result, 32767); LOOP EXIT WHEN xmlstr IS NULL; line := SUBSTR(xmlstr, 1, INSTR(xmlstr, CHR(10)) - 1); fnd_file.put_line(fnd_file.output, line); xmlstr := SUBSTR(xmlstr...

    Oracle PLSQL Programming 2nd

    - `INSTR`:在LOB中查找子串的位置。 - `READ`:读取LOB数据。 - `SUBSTR`:从LOB中提取子串。 - `TRIM`:去除LOB两端的空格。 - `WRITE`:写入LOB数据。 - **DBMS_LOCK**: - 提供了锁定机制,用于管理并发...

    oracle pl/sql programming

    #### C.6 DBMS_LOB 该包提供了对大对象(BLOB、CLOB)的操作支持。 - **APPEND**:向现有的大对象添加数据。 - **COMPARE**:比较两个大对象。 - **COPY**:复制一个大对象到另一个位置。 - **ERASE**:清空大对象中...

    泛微Ecology E9适配人大金仓数据库说明_v3.docx

    * 金仓数据库不支持dbms_lob.substr的使用,解决办法:改成instr。 * 金仓数据库不支持oracle.sql.Clob、empty_clob(),解决办法:使用!"jc".equalsIgnoreCase(rs.getOrgindbtype())执行非oracle逻辑。 * 返回自增...

    Oracle8i_9i数据库基础

    §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据字典 124 §3.9.2 数据字典查询例子 125 第四章 视图、同义词和序列 128 §4.1 视图 128 §4.1.1 使用视图来修改表中数据 128...

    数据库基础

    §3.8.3 操作和检索LOB数据 121 §3.9 表和索引有关的数据字典 124 §3.9.1 表和索引数据字典 124 §3.9.2 数据字典查询例子 125 第四章 视图、同义词和序列 128 §4.1 视图 128 §4.1.1 使用视图来修改表中数据 128...

    Oracle事例

    SQL&gt;select table_name,cache from user_tables where instr(cache,\'Y\')&gt;0; 28、约束条件 create table employee (empno number(10) primary key, name varchar2(40) not null, deptno number(2) default ...

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

    LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一...

    oracle数据库的学习

    单行函数如日期函数(Add_months、Last_day等)、字符函数(Substr、Instr等)、数字函数(Mod、Round等)和转换函数,它们对每行数据返回一个值。分组函数如COUNT、SUM、AVG等,用于对一组数据进行聚合操作。 通过...

    查询和 SQL 函数.ppt

    Oracle作为一款流行的DBMS,支持多种数据类型,如Char、Varchar2、Number、Long、Date、Raw、Long Raw和Lob。对于数据库的定义和操作,有Create(创建)、Alter(修改)、Drop(删除)和Truncate(清空)等命令。而...

    最全的oracle常用命令大全.txt

    Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: ...

Global site tag (gtag.js) - Google Analytics