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

Postgres में समग्र JSONB सरणी क्वेरी?

आपको शीर्ष स्तरीय सरणियों को अलग करना चाहिए और वहां से तत्वों की जांच करनी चाहिए:

select distinct id, content
FROM test
JOIN lateral (
    select elems 
    FROM jsonb_array_elements(content) jae(elems)
) all_arrays ON TRUE
WHERE elems ->> 0 = 'first 1'
and elems ->> 1 ilike '%3%'
ORDER BY 1;

ऐसा करने के सर्वोत्तम तरीके के लिए, यह आपके वास्तविक डेटा पर बहुत कुछ निर्भर करता है - कितनी पंक्तियाँ, ये jsonb संरचनाएँ कितनी बड़ी हैं, आदि। सामान्य तौर पर, हालांकि, ilike '%3%' जैसी खोज इंडेक्स आधारित से लाभान्वित होगी। pg_trgm से दूर क्योंकि वे पारंपरिक btree अनुक्रमणिका का उपयोग नहीं कर सकते।

संपादित करें:@ टिप्पणियों में एबेलिस्टो की क्वेरी बेहतर है क्योंकि यह अधिक प्रदर्शनकारी होनी चाहिए, खासकर यदि सामग्री में हजारों तत्व शामिल हो सकते हैं:

select * from test 
where exists 
  (select 1 
   from jsonb_array_elements(content) jae(elems) 
   where elems ->> 0 = 'first 1' 
   and elems ->> 1 ilike '%3%'
  );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माउंटेन लायन पोस्टग्रेज कनेक्ट नहीं हो सका

  2. ग्रुप बाय के बाद पंक्तियों की गिनती प्राप्त करें

  3. Postgresql - गतिशील रूप से डेटाबेस और तालिका बनाएं

  4. PostgreSQL महीने के नाम को नंबर में बदलें

  5. लेखन त्रुटि:'int' ऑब्जेक्ट अनुक्रमण का समर्थन नहीं करता