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

postgresql 9.4 jsonb को फंक्शन/सर्वर साइड लैंग्वेज के बिना ऑब्जेक्ट में कैसे बदलें?

jsonb_populate_record() (या json_populate_record() json . के लिए ) लक्ष्य के रूप में एक प्रसिद्ध पंक्ति प्रकार के साथ। आप तदर्थ उपयोग के लिए एक प्रकार को पंजीकृत करने के लिए एक अस्थायी तालिका का उपयोग कर सकते हैं (यदि आप मौजूदा का उपयोग नहीं कर सकते हैं तालिका या कस्टम मिश्रित प्रकार):

CREATE TEMP TABLE obj(a int, b int, c int, d int);

फिर:

SELECT t.id, d.*
FROM   test t
     , jsonb_populate_record(null::obj, t.data) d;

या उपयोग jsonb_to_record() (या json_to_record() json . के लिए ) और कॉल के साथ एक कॉलम परिभाषा सूची प्रदान करें:

SELECT t.id, d.*
FROM   test t
     , jsonb_to_record(t.data) d(a int, b int, c int, d int);

या निकालें और कास्ट करें प्रत्येक फ़ील्ड व्यक्तिगत रूप से:

SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
         , (data->>'c')::int AS c, (data->>'d')::int AS d
FROM   test;

तीनों json के लिए काम करते हैं और jsonb एक जैसे। बस संबंधित फ़ंक्शन प्रकार का उपयोग करें।

संबंधित:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डॉकर पोस्टग्रेज init फ़ाइल को docker-entrypoint-initdb.d . में नहीं चलाता है

  2. एक ही प्रश्न के साथ किसी अन्य तालिका से पुनर्प्राप्त तालिकाओं की सूची यूनियन कैसे करें?

  3. पोस्टग्रेज में एक विशिष्ट पंक्ति को लॉक करना

  4. DictCursor psycopg2 के तहत काम नहीं कर रहा है

  5. एकल क्वेरी के साथ कॉलम प्रकार का नाम बदलने और बदलने के लिए PostgreSQL क्वेरी