आप इनमें से किसी एक को आजमा सकते हैं (jsonb_array_elements(t.addresses) address
):
jsonb_array_elements(
case jsonb_typeof(addresses)
when 'array' then addresses
else '[]' end
) as address
-- or
jsonb_array_elements(
case jsonb_typeof(addresses)
when 'array' then addresses
else '[{"PostCode": null}]' end
) as address
पहला कॉलम के अनुचित जेसन प्रारूप के साथ पंक्तियों को छुपाता है, दूसरा एक null
देता है उनके लिए।
हालांकि, समस्या वास्तव में उस कॉलम में एक या अधिक मानों से उत्पन्न होती है जो एक जेसन सरणी नहीं है। आप इसे कमांड से आसानी से ठीक कर सकते हैं:
update contact
set addresses = '[null]'
-- or
-- set addresses = '[{"PostCode": null}]'
where jsonb_typeof(addresses) <> 'array' or addresses = '[]';
इस सुधार के बाद आपको case
की आवश्यकता नहीं होगी में jsonb_array_elements()
।