ウサギに関する情報を保存するテーブルがあります。次のようになります。
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"'
);
私はそのクエリが好きではありません。それは混乱です。
フルタイムのウサギ飼育員として、データベース スキーマを変更する時間がありません。うさぎにきちんと食べさせたいだけです。そのクエリを実行するためのより読みやすい方法はありますか?