如何在Oracle中比较两个CLOB值
时间:2020-03-05 18:59:30 来源:igfitidea点击:
我有两张桌子要赞扬。列之一是CLOB类型。我想做这样的事情:
select key, clob_value source_table minus select key, clob_value target_table
不幸的是,Oracle无法对Clob执行减号操作。我怎样才能做到这一点?
解决方案
回答
我们可以通过内置程序包访问数据吗?如果是这样,那么也许我们可以编写一个返回数据的字符串表示形式的函数(例如,数据上的某种哈希),那么我们可以
select key, to_hash_str_val(glob_value) from source_table minus select key, to_hash_str_val(glob_value) from target_table
回答
格式是这样的:
dbms_lob.compare( lob_1 IN BLOB, lob_2 IN BLOB, amount IN INTEGER := 18446744073709551615, offset_1 IN INTEGER := 1, offset_2 IN INTEGER := 1) RETURN INTEGER;
如果dbms_lob.compare(lob1,lob2)= 0,则它们是相同的。
这是一个基于示例的示例查询:
Select key, glob_value From source_table Left Join target_table On source_table.key = target_table.key Where target_table.glob_value is Null Or dbms_lob.compare(source_table.glob_value, target_table.glob_value) <> 0