कुछ RDBMS जैसे MySQL और MariaDB में एक GROUP_CONCAT()
होता है फ़ंक्शन जो आपको एक क्वेरी कॉलम को एक सीमांकित सूची के रूप में वापस करने की अनुमति देता है (उदाहरण के लिए, अल्पविराम से अलग की गई सूची)।
PostgreSQL का एक समान कार्य है जिसे STRING_AGG()
. कहा जाता है . यह फ़ंक्शन काफी हद तक उसी तरह काम करता है जैसे GROUP_CONCAT()
MySQL और MariaDB में काम करता है।
उदाहरण
यह दिखाने के लिए यहां एक बुनियादी उदाहरण दिया गया है कि कैसे PostgreSQL का STRING_AGG()
फ़ंक्शन काम करता है:
SELECT STRING_AGG(genre, ',') FROM Genres;
परिणाम:
Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk
यहां बताया गया है कि जब हम STRING_AGG()
. के बिना केवल क्वेरी करते हैं तो क्या होता है समारोह:
SELECT genre FROM Genres;
परिणाम:
+---------+ | genre | +---------+ | Rock | | Jazz | | Country | | Pop | | Blues | | Hip Hop | | Rap | | Punk | +---------+ (8 rows)
सभी मानों की एक लंबी अल्पविराम से अलग की गई पंक्ति के बजाय, हमें आठ पंक्तियाँ मिलती हैं, जिनमें से प्रत्येक का एक अलग मान होता है।
अगर कुछ है, तो PostgreSQL का STRING_AGG()
MySQL के GROUP_CONCAT()
. की तरह अधिक है मारियाडीबी के समान नाम के कार्य की तुलना में। मैं ऐसा इसलिए कह रहा हूं क्योंकि मारियाडीबी का GROUP_CONCAT()
हमें एक LIMIT
प्रदान करने की अनुमति देता है खंड (मारियाडीबी 10.3.3 से), फ़ंक्शन के भीतर से ही। MySQL GROUP_CONCAT()
LIMIT
का समर्थन नहीं करता खंड, और न ही PostgreSQL का STRING_AGG()
समारोह (कम से कम, इस लेखन के समय नहीं)।
एक और अंतर यह है कि PostgreSQL का STRING_AGG()
एक दूसरे तर्क की आवश्यकता है (जो उपयोग करने के लिए सीमांकक को निर्दिष्ट करता है)। MySQL और MariaDB दोनों अपने GROUP_CONCAT()
. के साथ इसे वैकल्पिक बनाते हैं कार्य।
पोस्टग्रेज़ का STRING_AGG()
एक ORDER BY
स्वीकार करता है खंड, और एक DISTINCT
खंड (जैसा कि मारियाडीबी और माईएसक्यूएल के GROUP_CONCAT()
करते हैं कार्य)।
देखें STRING_AGG()
अधिक उदाहरणों के लिए PostgreSQL में कार्य करें।
और यदि आप रुचि रखते हैं, तो SQL सर्वर में एक STRING_AGG()
भी होता है फ़ंक्शन जो काफी हद तक उसी तरह काम करता है।