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

SQL सर्वर GROUP_CONCAT के समतुल्य ()

SQL सर्वर 2017 के आने से पहले, MySQL GROUP_CONCAT() के समकक्ष कोई T-SQL नहीं था। समारोह। यह फ़ंक्शन आपको परिणाम सेट को अल्पविराम से अलग की गई सूची के रूप में वापस करने की अनुमति देता है, प्रत्येक पंक्ति को एक अलग पंक्ति के रूप में सूचीबद्ध करने के विपरीत (एक सामान्य परिणाम सेट के साथ)।

SQL सर्वर 2017 से पहले, यदि आप अपने परिणाम को अल्पविराम से अलग की गई सूची में रखना चाहते हैं, तो आपको शायद STUFF() के संयोजन का उपयोग करके वैकल्पिक हल खोजने की आवश्यकता होगी। , FOR XML , और PATH()

हालाँकि, T-SQL में अब STRING_AGG() है फ़ंक्शन जो SQL सर्वर 2017 से उपलब्ध है। यह फ़ंक्शन MySQL के GROUP_CONCAT() के समान ही कार्य करता है। समारोह (कुछ मामूली अंतर के साथ)।

सिंटैक्स

STRING_AGG() . का सिंटैक्स फ़ंक्शन इस प्रकार है:

STRING_AGG ( expression, separator ) [ <order_clause> ]

<order_clause> ::=   
    WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )

जहां expression किसी भी प्रकार की अभिव्यक्ति है। एक्सप्रेशन को NVARCHAR . में बदला जाता है या VARCHAR संयोजन के दौरान प्रकार। गैर-स्ट्रिंग प्रकारों को NVARCHAR . में रूपांतरित किया जाता है टाइप करें।

जहां विभाजक NVARCHAR . का एक एक्सप्रेशन है या VARCHAR प्रकार जो कि संयोजित तारों के लिए विभाजक के रूप में उपयोग किया जाता है। यह शाब्दिक या परिवर्तनशील हो सकता है।

(वैकल्पिक) ऑर्डर क्लॉज में WITHIN GROUP शामिल हैं इसके बाद ORDER BY ASC या ORDER BY DESC कोष्ठकों में। ASC आरोही क्रम में परिणाम का आदेश देता है। यह व्यतिक्रम मूल्य है। DESC परिणाम को अवरोही क्रम में क्रमित करता है।

उदाहरण

यहां STRING_AGG() का एक त्वरित उदाहरण दिया गया है समारोह:

SELECT STRING_AGG(Genre, ',') AS Result
FROM Genres;

परिणाम:

Result                                      
--------------------------------------------
Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

जैसा कि आप देख सकते हैं, परिणाम सेट को अल्पविराम से अलग की गई सूची के रूप में सूचीबद्ध किया गया है। ऐसा इसलिए है क्योंकि हमारा दूसरा तर्क अल्पविराम है, जो निर्दिष्ट करता है कि अल्पविराम को विभाजक के रूप में इस्तेमाल किया जाना चाहिए।

यहां वही परिणाम सेट किया गया है, लेकिन बिना STRING_AGG() . के समारोह:

SELECT Genre AS Result 
FROM Genres;

परिणाम:

Result 
-------
Rock   
Jazz   
Country
Pop    
Blues  
Hip Hop
Rap    
Punk   

तो बस एक सामान्य परिणाम सेट।

अधिक उदाहरणों के लिए, जैसे समूहबद्ध करना, शून्य मानों को संभालना, और परिणामों को क्रमबद्ध करना, SQL सर्वर में अल्पविराम से अलग की गई सूची के रूप में क्वेरी परिणाम कैसे लौटाएं देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑब्जेक्ट 'xxxxxxx', डेटाबेस 'zzzzzzz', स्कीमा 'dbo' पर EXECUTE अनुमति अस्वीकार कर दी गई थी

  2. एक साल में हर महीने के रिकॉर्ड गिनें

  3. SQL सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125

  4. फिक्स:SQL सर्वर (और SQL एज) में "रिकवरी मॉडल SIMPLE होने पर स्टेटमेंट बैकअप लॉग की अनुमति नहीं है"

  5. मैं ASP.NET और SQL सर्वर के बीच कनेक्शन पूल समस्या को कैसे हल कर सकता हूं?