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

टेबल कॉलम पर पोस्टग्रेज JSON फ़ंक्शंस का उपयोग करना

select . के बाद के भाव एक ही मूल्य का मूल्यांकन करना चाहिए। चूंकि jsonb_to_recordset पंक्तियों और स्तंभों का एक सेट लौटाता है, आप इसका उपयोग वहां नहीं कर सकते।

समाधान एक cross join lateral . है , जो आपको एक फ़ंक्शन का उपयोग करके एक पंक्ति को कई पंक्तियों में विस्तारित करने की अनुमति देता है। यह आपको एकल पंक्तियाँ देता है जो select पर कार्रवाई कर सकता है। उदाहरण के लिए:

select  *
from    journal j
cross join lateral
        jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where   j.id = 'ap32bbofopvo7pjgo07g'

ध्यान दें कि #>> ऑपरेटर रिटर्न टाइप text , और #> ऑपरेटर रिटर्न प्रकार jsonb . jsonb_to_recordset . के रूप में उम्मीद है jsonb इसके पहले पैरामीटर के रूप में मैं उपयोग कर रहा हूँ #>

इसे rextester.com पर काम करते हुए देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में रेल 4 (और Hstore) के साथ नेस्टेड हैश संग्रहीत करना

  2. मान त्रुटि Psycopg2 का उपयोग कर पोस्टग्रेज तालिका में डेटा आयात करते समय

  3. SQL अनुकूलन की आवश्यकता है (शायद DISTINCT ON इसका कारण है?)

  4. पोस्टगिस विभिन्न SRID के साथ भेजे गए निर्देशांक का इलाज कैसे कर रहा है

  5. PostgreSQL के लिए सुरक्षा ऑडिट को स्वचालित करना