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 पर काम करते हुए देखें