У меня есть таблица для хранения информации о моих кроликах. Выглядит это так:
create table rabbits (rabbit_id bigserial primary key, info json not null);
insert into rabbits (info) values
('{"name":"Henry", "food":["lettuce","carrots"]}'),
('{"name":"Herald","food":["carrots","zucchini"]}'),
('{"name":"Helen", "food":["lettuce","cheese"]}');
Как найти кроликов, которые любят морковь? Я придумал это:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
Мне не нравится этот запрос. Это беспорядок.
У меня, как у кроликовода, занятого полный рабочий день, нет времени менять схему базы данных. Я просто хочу как следует кормить своих кроликов. Есть ли более понятный способ выполнить этот запрос?