我有两个表需要比较,其中一个列的类型是CLOB。我想做类似于这样的事情:
select key, clob_value source_table
minus
select key, clob_value target_table
很遗憾,Oracle无法对CLOB执行减法运算。我该怎么办?
格式如下:
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
您能否通过内置包访问数据?如果可以,那么也许您可以编写一个函数来返回数据的字符串表示形式(例如数据的某种哈希值),然后您可以执行以下操作:
select key, to_hash_str_val(glob_value) from source_table
minus
select key, to_hash_str_val(glob_value) from target_table
glob
是指clob
吗? - William Robertson