• dbms_lob包学习笔记之三:instr和substr存储过程


    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 过程已成功完成。

     作者:hellofei

  • 相关阅读:
    bootstraptreeview 拖拽
    剑指 Offer 40. 最小的k个数
    剑指 Offer 32 II. 从上到下打印二叉树 II
    剑指 Offer 30. 包含min函数的栈
    剑指 Offer 32 III. 从上到下打印二叉树 III
    剑指 Offer 39. 数组中出现次数超过一半的数字
    剑指 Offer 38. 字符串的排列
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 32 I. 从上到下打印二叉树
  • 原文地址:https://www.cnblogs.com/lxl57610/p/9253452.html
Copyright © 2020-2023  润新知