आप ऐसा "गतिशील रूप से" नहीं कर सकते। आपको वे कॉलम निर्दिष्ट करने होंगे जिन्हें आप रखना चाहते हैं:
select name, description, id,
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;
यदि आप बहुत कुछ करते हैं, तो आप इसे एक दृश्य में रखना चाहेंगे।
एक अन्य विकल्प पोस्टग्रेज में एक ऑब्जेक्ट प्रकार बनाना है जो आपके JSON में विशेषताओं का प्रतिनिधित्व करता है, उदा।
create type core_type as (id integer, tax numeric, price numeric, code varchar);
फिर आप JSON को उस प्रकार में कास्ट कर सकते हैं और JSON से संबंधित विशेषताएँ स्वचालित रूप से कॉलम में परिवर्तित हो जाएंगी:
उपरोक्त प्रकार और निम्नलिखित JSON के साथ:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"}
आप यह कर सकते हैं:
select id, (json_populate_record(null::core_type, data)).*
from core;
और यह वापस आ जाएगा:
id | tax | price | code
---+------+-------+-----
1 | 4.50 | 10 | YXCV
लेकिन आपको यह सुनिश्चित करने की आवश्यकता है कि प्रत्येक JSON मान कर सकता है संबंधित ऑब्जेक्ट फ़ील्ड के प्रकार पर कास्ट किया जाए।
यदि आप ऑब्जेक्ट प्रकार बदलते हैं, तो इसका उपयोग करने वाली कोई भी क्वेरी स्वचालित रूप से अपडेट हो जाएगी। तो आप केंद्रीय परिभाषा के माध्यम से अपनी रुचि के कॉलम प्रबंधित कर सकते हैं।