libpqtypes
ऐसा लगता है कि hstore
. के लिए कुछ समर्थन है ।
एक अन्य विकल्प hstore
. के साथ सीधे इंटरैक्ट करने से बचना है आपके कोड में। क्लाइंट पक्ष पर इसके टेक्स्ट प्रस्तुतिकरण से निपटने के बिना आप अभी भी डेटाबेस में इसका लाभ उठा सकते हैं। मान लें कि आप एक hstore फ़ील्ड लाना चाहते हैं; आप बस उपयोग करें:
SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);
या पुराने PostgreSQL संस्करणों पर आप विचित्र और गैर-मानक सेट-रिटर्निंग-फ़ंक्शन-इन-सेलेक्ट फॉर्म का उपयोग कर सकते हैं:
SELECT t.id, each(t.hstorefield) FROM thetable t;
(लेकिन देखें कि क्या t
. से एक से अधिक रिकॉर्ड का चयन किया जा रहा है इस तरह, आपको अजीब परिणाम मिलेंगे जबकि LATERAL
ठीक रहेगा)।
एक अन्य विकल्प hstore_to_array
. का उपयोग करना है या hstore_to_matrix
क्वेरी करते समय, यदि आप PostgreSQL सरणी प्रतिनिधित्व के साथ सहज महसूस करते हैं।
hstore मान बनाने के लिए आप hstore कंस्ट्रक्टर्स का उपयोग कर सकते हैं जो सरणियाँ लेते हैं। बदले में उन सरणियों को array_agg
. के साथ बनाया जा सकता है एक VALUES
. से अधिक खंड यदि आप अपने कोड में PostgreSQL के सरणी प्रतिनिधित्व से निपटना नहीं चाहते हैं।
यह सारी गड़बड़ी भविष्य में दूर हो जानी चाहिए, क्योंकि PostgreSQL 9.4 में hstore और json प्रकारों के बीच बेहतर इंटरऑपरेशन होने की संभावना है, जिससे आप hstore के साथ बातचीत करते समय सिर्फ json प्रतिनिधित्व का उपयोग कर सकते हैं।