Я пытаюсь сравнить значения в таблице истории, заполненной триггером обновления, чтобы увидеть, равны ли определенные столбцы в старых и новых значениях полей JSON, и если все равны, тогда можно создать случай при запросе.Вот что я пытаюсь сделать:
SQL
create table history
(
id serial not null,
ts timestamp default now(),
table_schema text,
table_name text,
operation text,
updated_by text default CURRENT_USER,
new json,
old json
);
With t AS (
select id,
old->>'field1' = new->>'field1' as isMatchField1,
old->>'field2' = new->>'field2' as isMatchField2,
old->>'field3' = new->>'field3' as isMatchField3,
old->>'field4' = new->>'field4' as isMatchField4
from history)
select id, array [isMatchField1, isMatchField2, isMatchField3, isMatchField4] from t
ВЫХОД
1, {true, true, false, null}
Как отфильтровать все нули из массива и выполнить запрос при поиске, если существует только истинное значение.в основном я хочу сделать что-то вроде:
select id,
case when array field is only true and null then 'no changes made'
else
'changes made'
end as updated
from t