compare()方法
compare(lob1,lob2,amount,offset_1,offset_2)
1用于比较2个lob存储的数据,比较的方式是从指定偏移量开始,对指定数量的字符或者字节进行比较。
2如果比较内容相同,返回0,否则返回-1或1.
3如果参数设置有误或不合理,返回null
4改方法的使用语法如下

语法1(BLOB/BFILE)
dbms_lob.compare(
lob_1 IN BLOB/BFILE,
lob_2 IN BLOB/BFILE,
amount IN INTEGER:=4294967295,–要比较的字节数(BLOB)
offset_1 IN INTEGER:=1,–lob_1的起始位置
offset_2 IN INTEGER:=1–lob_2的起始位置)

语法1(CLOB/nclob )
dbms_lob.compare(
lob_1 IN CLOB/nclob character set any_cs,
lob_2 INCLOB/nclob character set lob_1%charset ,
amount IN INTEGER:=4294967295,–要比较的字节数(BLOB)
offset_1 IN INTEGER:=1,–lob_1的起始位置
offset_2 IN INTEGER:=1–lob_2的起始位置)

参数解释:
offset_1:lob_1的起始位置
offset_2:lob_2的起始位置
amount IN INTEGER:要比较的字符数(CLOB)或者字节数(BLOB)
character set any_cs:lob_1 中的数据可以是任何字符集
character set dest_lob%charset:表示lob_1的字符集.

举例
测试数据

 create table  clob_table(
id number,
clob_column clob not null
);

--添加数据
--to_clob 将字符数据转换为clob类型
insert into clob_table values(1,to_clob('this is clob data'));
insert into clob_table values(2,to_clob('clob is here'));
select * from clob_table;

这里写图片描述

使用compare方法

create or replace procedure compare_clob 
as
  src_lob clob;  
  dest_lob clob;  
  amount  INTEGER:=5;
  offset_1  INTEGER:=1;
  offset_2  INTEGER:=1;
  return_value INTEGER;

begin  
  select clob_column into dest_lob from clob_table where id=1 for update;
  select clob_column into src_lob from clob_table where id=2  for update;
  return_value:=dbms_lob.compare(dest_lob,src_lob,amount,offset_1,offset_2);  
  dbms_output.put_line('比较结果是'||return_value);
end compare_clob;
/
exec compare_clob;

这里写图片描述

posted on 2017-06-03 16:14  2637282556  阅读(1100)  评论(0编辑  收藏  举报