Как сравнить два значения CLOB в Oracle - PullRequest
4 голосов
/ 17 сентября 2008

У меня есть две таблицы, на которые я бы хотел пожаловаться. Один из столбцов - это тип CLOB. Я хотел бы сделать что-то вроде этого:

select key, clob_value source_table
minus
select key, clob_value target_table

К сожалению, Oracle не может выполнять операции с минусом над сгустками. Как я могу это сделать?

Ответы [ 2 ]

8 голосов
/ 17 сентября 2008

Формат такой:

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
2 голосов
/ 17 сентября 2008

Можете ли вы получить доступ к данным через встроенный пакет? Если так, то, возможно, вы могли бы написать функцию, которая возвращала бы строковое представление данных (например, какой-то хеш-код данных), тогда вы могли бы сделать

select key, to_hash_str_val(glob_value) from source_table
minus
select key, to_hash_str_val(glob_value) from target_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...