PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

नेस्टेड JSONB फ़ील्ड में ऑब्जेक्ट्स के लिए Postgresql क्वेरी

आपको 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 () का उपयोग करने की आवश्यकता को समाप्त कर दे। और काफी तेज होना चाहिए।

दस्तावेज़ीकरण में पढ़ें:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई आसन्न पंक्तियों पर WHERE का उपयोग करके पोस्टग्रेज़ क्वेरी को दर्दनाक रूप से धीमा करें

  2. केवल पोस्टग्रेज में फंक्शन का बैकअप कैसे लें

  3. त्रुटि:डुप्लिकेट कुंजी मान postgreSQL में अद्वितीय बाधा का उल्लंघन करता है

  4. स्प्रिंग बूट में डेटाबेस स्कीमा को ठीक से कैसे निर्दिष्ट करें?

  5. 3 टेबल के साथ एक्सएमएल से पोस्टग्रेएसक्यूएल