Не используйте ANY
, просто сравните массивы напрямую, используя конструктор массива и функции массива
CREATE TABLE test (
metadata bytea[]
);
INSERT INTO public.test (metadata) VALUES('{"x","y"}');
SELECT * FROM test t WHERE metadata && array[E'\x78'::bytea];
При использовании ANY вычисляется и сравнивается левое выражение для каждого элемента правого массива, используя данный оператор, который должен привести к логическому результату. Итак, оригинальный sql пытался сделать что-то вроде bytea[] && bytea
.
Это относится не только к bytea[]
, но и к любому типу массива, например text[]
или integer[]
.