मेरे पास अपने खरगोशों के बारे में जानकारी संग्रहीत करने के लिए एक मेज है। यह इस तरह दिख रहा है:
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"'
);
मुझे वह क्वेरी पसंद नहीं है। यह एक गड़बड़ है।
पूर्णकालिक खरगोश-रक्षक के रूप में, मेरे पास अपने डेटाबेस स्कीमा को बदलने का समय नहीं है। मैं बस अपने खरगोशों को ठीक से खिलाना चाहता हूं। क्या उस क्वेरी को करने के लिए अधिक पठनीय तरीका है?