знает ли кто-нибудь, как вводить подстановочные знаки (например, %%) при запросе столбца jsonb, который в данном случае является массивом на верхнем уровне? также хотел бы игнорировать casee
select * from "food" where (type @> '"xyz"')
Одним из вариантов может быть применение CROSS JOIN между элементами таблицы и невложенного массива без подзапроса как
CROSS JOIN
SELECT j.* FROM food f CROSS JOIN jsonb_array_elements(type) AS j WHERE value::text like '%"xyz"%'
Demo
спасибо, ребята .. похоже, это помогает:
SELECT * FROM food, jsonb_array_elements(type) as types WHERE types::text ilike '%xyz%';```
Вам нужно разложить массив:
select f.* from food f where exists (select * from jsonb_array_elements_text(f.type) as x(typ) where x.typ like '%xyz%');