दिलचस्प पोस्ट
जब स्रोत स्त्रोत छवि नहीं मिली है तो चुपचाप "छवि नहीं मिली" आइकन को छिपाने के लिए कैसे करें "एक्स-यूए-संगत" सामग्री = "आईई = 9; IE = 8; IE = 7; IE = किनारा " टी-एसक्यूएल 2 तिथियों के बीच सभी दिनांक प्राप्त करते हैं LINQ के बारे में सीखना java.io.IOException: चिह्न / रीसेट समर्थित नहीं है Windows में वाइल्डकार्ड होस्ट फ़ाइल एंड्रॉइड ब्लूटूथ RFCOMM कनेक्शन को .connect () के तुरंत बाद मरने से कैसे रोकें? अंतर null = सच, रिक्त = django में सच आईफ़्रैम के अंदर डिव स्टाइल को प्रभावित करने के लिए सीएसएस का उपयोग करना Npm.js मॉड्यूल एनपीएम का उपयोग किए बिना कैसे स्थापित करें? दो तिथियों के बीच कार्य दिवसों की संख्या खोजने के लिए MySQL फ़ंक्शन Rails और Rake समस्याओं पर रूबी: uninitialized निरंतर रेक :: डीएसएल सिंगलटन: इसे कैसे इस्तेमाल किया जाना चाहिए क्या है क्यू = 0.5 स्वीकार करें * HTTP हेडर? क्या एक्शनबार टैब सूचक प्रोग्राम को बदलना संभव है?

एक पोस्टग्रेज़ सरणी में डेटा का चयन करना

मेरे पास निम्न डेटा है:

name id url John 1 someurl.com Matt 2 cool.com Sam 3 stackoverflow.com 

मैं इस डेटा को बहु-आयामी सरणी में चुनने के लिए पोस्टग्रेज़ में एक SQL कथन कैसे लिख सकता हूँ, यानी:

 {{John, 1, someurl.com}, {Matt, 2, cool.com}, {Sam, 3, stackoverflow.com}} 

मैंने पोस्टग्रेज़ से पहले इस तरह के सरणी का उपयोग देखा है लेकिन यह पता नहीं कैसे तालिका से डेटा को इस सरणी प्रारूप में चुनना है

मान लें कि सभी कॉलम प्रकार text के हैं

वेब के समाधान से एकत्रित समाधान "एक पोस्टग्रेज़ सरणी में डेटा का चयन करना"

आप बहु-आयामी arrays का निर्माण करने के लिए array_agg() का उपयोग नहीं कर सकते हैं, कम से कम पोस्टग्रेएसक्यूएल 9.4 तक नहीं।
(लेकिन आगामी Postgres 9.5 array_agg() एक नए संस्करण जहाज कर सकते हैं)!

आप @ मेट बॉल की क्वेरी से क्या बाहर निकलते हैं रिकॉर्ड की एक सरणी ( the_table[] )

एक सरणी केवल एक ही आधार प्रकार के तत्वों को पकड़ सकता है आपके पास स्पष्ट रूप से संख्या और स्ट्रिंग प्रकार हैं इसे काम करने के लिए सभी कॉलमों (जो पहले से नहीं हैं) में कनवर्ट करें

आप इस तरह के लिए एक समग्र फ़ंक्शन बना सकते हैं जैसे मैंने आपको यहां पहले प्रदर्शित किया था।

 CREATE AGGREGATE array_agg_mult (anyarray) ( SFUNC = array_cat ,STYPE = anyarray ,INITCOND = '{}' ); 

कॉल करें:

 SELECT array_agg_mult(ARRAY[ARRAY[name, id::text, url]]) AS tbl_mult_arr FROM tbl; 

अतिरिक्त ARRAY[] परत को नोट करें ताकि इसे बहुआयामी सरणी (2-डिमेंस्टोनियल, सटीक होना) बना सके।

त्वरित डेमो:

 WITH tbl(id, txt) AS ( VALUES (1::int, 'foo'::text) ,(2, 'bar') ,(3, '}b",') -- txt has meta-characters ) , x AS ( SELECT array_agg_mult(ARRAY[ARRAY[id::text,txt]]) AS t FROM tbl ) SELECT *, t[1][3] AS arr_element_1_1, t[3][4] AS arr_element_3_2 FROM x; 

आपको एक समग्र कार्य का उपयोग करने की आवश्यकता है; array_agg को आपको क्या करना चाहिए।

 SELECT array_agg(s) FROM (SELECT name, id, url FROM the_table ORDER BY id) AS s;