- 浏览: 230799 次
- 性别:
- 来自: 北京
文章分类
最新评论
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 过程已成功完成。
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 递归查询
2017-11-30 10:23 1127递归查询基础结构 select … from tablen ... -
Oracle32bit 兼容性
2017-10-26 10:17 1096Oracle10G 32bit 安装在 server08:选择 ... -
Oracle11G密码到期ORA-28002
2017-08-03 09:34 540问题: 系统启动失败, 报错ORA-28002(oracle ... -
wm_concat和listagg用法,合并行数据
2017-06-27 15:48 1364方法一 wn_concat() 函数 1、把以下图中Na ... -
Decode与NVL和NVL2区别
2017-06-27 15:23 730Decode decode(条件,值1,翻译值1,值2,翻 ... -
存储过程
2017-06-27 15:11 495CREATE OR REPLACE PROCEDURE P ... -
乐观锁与悲观锁
2017-03-28 13:15 458悲观锁(Pessimistic Lock): ... -
在线格式化工具
2017-03-27 20:37 523比较实用的在线工具: http://tool.lu/ -
解决linux 下 oracle 11g 密码过期问题(ORA-28002)
2017-03-27 16:46 988问题形成:oracle11g 密码过期时间是180天: 查看过 ... -
mysql
2017-03-23 13:57 324查看安装路径:select @@basedir as base ... -
sqlite3创建数据库
2016-12-09 17:42 6651.将sqlite3.exe目录添加到环境变量中 2.创建数据 ... -
Sqlite安装
2016-12-09 16:41 572学习:http://www.runoob.com/sqlite ... -
oracle dba与resource角色的区别
2016-08-02 14:25 647拥有dba角色的用户,就是数据库管理员、可以访问和修改所有用户 ... -
Oracle获得当天0点时间
2016-05-10 17:58 2813SELECT To_char(Trunc(SYSDAT ... -
Oracle授权访问视图
2016-04-25 11:46 1406-----用sys账号登录注册新用户---------CREA ... -
oracle删除一条重复数据
2016-04-21 15:20 898查询及删除重复记录 ... -
Oracle Exists 实现 in like 混合使用
2015-12-08 17:23 2099select t.*, t.rowid from sm_u ... -
mysql 递归查询
2015-11-24 10:24 560CREATE TABLE nodelist( ... -
Oracle - 数据库的实例、表空间、用户、表之间关系
2015-11-12 14:31 743完整的Oracle数据库通常由两部分组成:Oracle数据库 ... -
Oracle授予用户权限
2015-11-12 14:23 6320Oracle授予用户权限 需要在Oracle里创建一个用 ...
相关推荐
通过阅读如“Oracle中的包――DBMS_LOB(一).pdf”、“ORACLE LOB大对象处理.pdf”和“DBMS_LOB包的使用.pdf”等资料,可以深入理解这些概念,并通过实践来熟练掌握。同时,“dbms_lob包学习笔记之二:append和...
instr和substr存储过程,分析内部大对象的内容 instr函数 instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串。 用于查找内部大对象中的字符串的instr函数语法如下: dbms_lob.instr( lob_...
为了解决这个问题,可以使用Oracle提供的DBMS_LOB包中的函数,如DBMS_LOB.SUBSTR和DBMS_LOB.INSTR。DBMS_LOB.SUBSTR用于提取CLOB字段的一部分,DBMS_LOB.INSTR则可以在CLOB中查找指定子串的位置。例如: ```sql ...
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...
- `INSTR`:在LOB中查找子串的位置。 - `READ`:读取LOB数据。 - `SUBSTR`:从LOB中提取子串。 - `TRIM`:去除LOB两端的空格。 - `WRITE`:写入LOB数据。 - **DBMS_LOCK**: - 提供了锁定机制,用于管理并发...
#### C.6 DBMS_LOB 该包提供了对大对象(BLOB、CLOB)的操作支持。 - **APPEND**:向现有的大对象添加数据。 - **COMPARE**:比较两个大对象。 - **COPY**:复制一个大对象到另一个位置。 - **ERASE**:清空大对象中...
* 金仓数据库不支持dbms_lob.substr的使用,解决办法:改成instr。 * 金仓数据库不支持oracle.sql.Clob、empty_clob(),解决办法:使用!"jc".equalsIgnoreCase(rs.getOrgindbtype())执行非oracle逻辑。 * 返回自增...
§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...
SQL>select table_name,cache from user_tables where instr(cache,\'Y\')>0; 28、约束条件 create table employee (empno number(10) primary key, name varchar2(40) not null, deptno number(2) default ...
LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一...
单行函数如日期函数(Add_months、Last_day等)、字符函数(Substr、Instr等)、数字函数(Mod、Round等)和转换函数,它们对每行数据返回一个值。分组函数如COUNT、SUM、AVG等,用于对一组数据进行聚合操作。 通过...
Oracle作为一款流行的DBMS,支持多种数据类型,如Char、Varchar2、Number、Long、Date、Raw、Long Raw和Lob。对于数据库的定义和操作,有Create(创建)、Alter(修改)、Drop(删除)和Truncate(清空)等命令。而...
Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: ...