2012-01-10 19 views
6

की आसानी उत्पादन hstore प्रारूप वहाँएक तालिका पंक्ति

SELECT hstore(ARRAY['col1','col2','col3'], ARRAY[col1::text, col2::text, col3::text]) FROM tbl; 

जा रहा यह काम करता है की तुलना में hstore प्रारूप में एक मेज की एक पंक्ति पाने के लिए एक बेहतर तरीका है, लेकिन मैं समझ वहाँ की तुलना में एक बेहतर तरीका हो गया है प्रत्येक कॉलम टाइपिंग। hstore इनपुट के लिए एक रिकॉर्ड प्रकार लेता है, लेकिन मैं यह समझ नहीं पाया कि समारोह में सिंगल-पंक्ति उत्पादक क्वेरी को कैसे खिलाया जाए और इसे खुश कर दें। पोस्टग्रेज़ संस्करण 9.0.4।

उत्तर

10

हां - आप hstore() फ़ंक्शन के साथ पंक्ति को हिस्टोर प्रकार में डाल सकते हैं। मेरे लिए

SELECT hstore(tbl.*) FROM tbl; 

काम करता है:

[email protected]=# select hstore(foo.*) from foo; 
     hstore 
------------------------ 
"bar"=>"1", "baz"=>"2" 
(1 row) 

देखें http://www.postgresql.org/docs/9.0/static/hstore.html#HSTORE-FUNC-TABLE

+1

आह! मैंने टेबल नाम को वहां नहीं रखा था। मैंने बस tbl से चयन hstore (*) की कोशिश की। धन्यवाद! – EvilAmarant7x

+1

किसी कारण से अकेले तारांकन '(*) '' (foo। *)' से अलग तरीके से पार्स किया गया है। अजीब लेकिन इस तरह यह काम करता है। – filiprem

-1
के बजाय * यदि आप तालिका उर्फ ​​उल्लेख करने के लिए है

:

SELECT hstore(tbl) FROM tbl; 

तारांकन के साथ अपनी एक लंबी और कम selfexplaining वाक्य रचना :

SELECT hstore(tbl.*) FROM tbl; 
संबंधित मुद्दे