Sql 如何比较Oracle中的两个CLOB值
我想订两张桌子。其中一列是CLOB类型。我想这样做:Sql 如何比较Oracle中的两个CLOB值,sql,oracle,Sql,Oracle,我想订两张桌子。其中一列是CLOB类型。我想这样做: select key, clob_value source_table minus select key, clob_value target_table 不幸的是,Oracle无法对CLOB执行减号操作。我如何才能做到这一点?您可以通过内置软件包访问数据吗?如果是这样,那么也许您可以编写一个返回数据的字符串表示形式的函数(例如数据上的某种散列),然后您可以这样做 select key, to_hash_str_val(glob_value
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
选择键,全局值
从源\表左连接目标\表
On source_table.key=target_table.key
其中target_table.glob_值为空
或dbms_lob.compare(源_table.glob_值、目标_table.glob_值)0
glob
是否表示clob
?是的,我们已经在生产中使用它来比较前后一对表。我们最终使用了内置的dbms\u crypto.hash
。。。看见