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

SQL में अच्छी तरह से मुद्रित प्रारूप में सरणियों का चयन करना

कई तरीके हैं। एक तरीका यह है कि सरणी को टेक्स्ट में डाला जाए और इसे regexp_split_to_table से विभाजित किया जाए। () .
यह फ़ंक्शन PostgreSQL 8.3 या बाद के संस्करण . में मौजूद है .

SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');

आउटपुट:

0,0,0
1,1,1
2,2,2

यदि आप संलग्न कोष्ठक चाहते हैं (शायद आप नहीं?), तो उन्हें इस तरह वापस जोड़ें:

SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';

हमारा आउटपुट:

{0,0,0}
{1,1,1}
{2,2,2}

वैकल्पिक:

यह PostgreSQL 8.2 के साथ भी काम करना चाहिए या शायद पहले भी, लेकिन मैंने उसका परीक्षण नहीं किया।

SELECT my_2d_int_arr_var[x:x][1:3]
  FROM (SELECT generate_series(1, array_upper(my_2d_intarr, 1), 1)::int4 AS x)) x

आउटपुट:

{{0,0,0}}
{{1,1,1}}
{{2,2,2}}

<उप>(आप कुछ घुंघराले कोष्ठकों को हटाना चाह सकते हैं ..)

अन्यथा, मैं एक plpgsql फ़ंक्शन लिखूंगा जो सरणी के माध्यम से लूप करता है। काफी आसान।

संबंधित unnest() भी है फ़ंक्शन, लेकिन यह प्रति आधार तत्व (इस मामले में पूर्णांक) की एक पंक्ति देता है, इसलिए इसका यहां कोई उपयोग नहीं है।

परिणाम आउटपुट करने का एक (तेज़!) तरीका:COPY




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रिटर्निंग त्रुटि का कारण बनता है:तालिका के लिए FROM-क्लॉज प्रविष्टि गुम है

  2. पोस्टग्रेएसक्यूएल त्रुटि में WHERE क्लॉज में एग्रीगेट्स की अनुमति नहीं है

  3. SqlAlchemy (Postgres + Flask):एकाधिक कॉलम कैसे योग करें?

  4. टेक्स्ट पर अजीब वर्णों का चयन करें, LIKE ऑपरेटर के साथ काम नहीं कर रहा है

  5. पोस्टग्रेज के साथ कॉलम में अलग-अलग पंक्ति डेटा पिवट/क्रॉस करें