आपको JSON फंक्शन्स और ऑपरेटर्स से परिचित हो जाना चाहिए। ।
-- #1
select *
from example
where content->'Item'->>'Name' ilike '%dog%'
and content->'Item'->>'Spec' ilike '%red%'
-- #2
select *
from example
where content->'Item'->>'Name' ilike '%dog%'
or content->'Item'->>'Spec' ilike '%red%'
-- #3
select distinct on(no) t.*
from example t,
lateral jsonb_each_text(content->'Item')
where value ilike '%dog%';
-- and
select *
from example t
order by length(content->'Item'->>'Name');
12 पोस्ट करें SQL/JSON पथ भाषा को लागू करने वाली नई सुविधाओं का परिचय देता है। jsonpath
. का उपयोग करके वैकल्पिक क्वेरीज़ ऐसा दिखाई दे सकता है:
-- #1
select *
from example
where jsonb_path_exists(
content,
'$ ? ($.Item.Name like_regex "dog" flag "i" && $.Item.Spec like_regex "red" flag "i")');
-- #2
select *
from example
where jsonb_path_exists(
content,
'$ ? ($.Item.Name like_regex "dog" flag "i" || $.Item.Spec like_regex "red" flag "i")');
-- #3
select *
from example
where jsonb_path_exists(
content,
'$.Item.* ? (@ like_regex "dog" flag "i")');
पहले दो प्रश्न मूल रूप से पिछले वाले के समान हैं और ->
सिंटैक्स jsonpath
. की तुलना में सरल और अधिक सुखद लग सकता है एक। तीसरी क्वेरी पर विशेष ध्यान दिया जाना चाहिए, जो वाइल्डकार्ड का उपयोग करती है ताकि यह महंगे फ़ंक्शन jsonb_each_text ()
का उपयोग करने की आवश्यकता को समाप्त कर दे। और काफी तेज होना चाहिए।
दस्तावेज़ीकरण में पढ़ें: