Как сравнить два значения CLOB в Oracle

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

select key, clob_value source_table
minus
select key, clob_value target_table

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

glob означает clob?

William Robertson 31.10.2017 21:53
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
7
1
12 586
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

select key, to_hash_str_val(glob_value) from source_table
minus
select key, to_hash_str_val(glob_value) from target_table

Да, мы использовали это в производстве для сравнения пары таблиц до и после. В итоге мы использовали встроенный dbms_crypto.hash ... См. здесь

wolφi 04.07.2018 17:57
Ответ принят как подходящий

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

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

Другие вопросы по теме