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

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

आप array_agg() का उपयोग नहीं कर सकते हैं बहु-आयामी सरणियों का उत्पादन करने के लिए, कम से कम PostgreSQL 9.4 तक नहीं।
(लेकिन आगामी पोस्टग्रेस 9.5 array_agg() . का एक नया संस्करण शिप करता है वह कर सकता है!)

@Matt Ball की क्वेरी से आपको जो मिलता है वह रिकॉर्ड की एक सरणी है (the_table[] )।

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

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

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुप्पी-SQLAlchemy लोअर केस इंडेक्स - कार्यात्मक लंघन, SQLAlchemy प्रतिबिंब द्वारा समर्थित नहीं है

  2. पोस्टग्रेएसक्यूएल के लिए डिजास्टर रिकवरी विकल्प हाइब्रिड क्लाउड पर तैनात

  3. विंडो फ़ंक्शन और अधिक स्थानीय एकत्रीकरण

  4. Postgresql डेटाटाइम में दिनों की संख्या कैसे जोड़ें?

  5. कैसे Asind () PostgreSQL में काम करता है