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

एक अदिश से तत्व नहीं निकाल सकते

आप इनमें से किसी एक को आजमा सकते हैं (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()




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pg_ctl युक्तियाँ और तरकीबें

  2. पोस्टग्रेज में रेगुलर एक्सप्रेशन ढूंढें और बदलें

  3. $mysqli->insert_id . के बराबर postgresql

  4. JDBC org.postgresql.Driver लोड करते हुए कक्षा नहीं मिली

  5. बहु-तालिका खंडों के साथ एकल पंक्ति में एकाधिक पंक्ति मानों का चयन करें