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

एक आईडी द्वारा समूहीकृत अल्पविराम सीमांकित सूची का चयन करें

select ET1.EntryID,
       (
       select ', '+T.Name
       from Tags as T
         inner join EntryTag as ET2
           on T.TagID = ET2.TagID
       where ET1.EntryID = ET2.EntryID
       for xml path(''), type
       ).value('substring(text()[1], 3)', 'varchar(max)') as TagsCommaDelimited
from EntryTag as ET1
group by ET1.EntryID

क्वेरी को अलग करना

मुख्य क्वेरी एक group by . करती है इसलिए आपको प्रत्येक EntryID . के लिए केवल एक पंक्ति मिलती है ।

कॉलम TagsCommaDelimited एक सहसंबद्ध उपश्रेणी के साथ बनाया गया है।

SQL सर्वर में for xml path किसी क्वेरी परिणाम का XML प्रतिनिधित्व बनाने के लिए उपयोग किया जाता है। कॉलम एलियासेस और path . के पैरामीटर का उपयोग करके XML कैसे बनाया जाता है, इस पर आपका अच्छा नियंत्रण है और root .

संयोजित मान ', '+T.Name सहसंबंधित सबक्वेरी में एक कॉलम नाम और खाली पैरामीटर नहीं होगा for xml path('') बिना किसी टैग के एक्सएमएल बनाता है। केवल एक टेक्स्ट मान लौटाया जाएगा।

जब आप type जोड़ते हैं एक for xml क्वेरी डेटा प्रकार होगा XML .

किसी XML से मान प्राप्त करने के लिए आपको value() तरीका। आप एक स्ट्रिंग पर कास्ट कर सकते हैं लेकिन अगर आपने ऐसा किया तो आपको उदाहरण के लिए & . मिलेगा स्ट्रिंग में जहाँ भी आपने & का उपयोग किया है ।

value() . में पहला पैरामीटर फ़ंक्शन xQuery अभिव्यक्ति है जिसका उपयोग आपके इच्छित मान को प्राप्त करने के लिए किया जाता है। text() का प्रयोग करें यह निर्दिष्ट करने के लिए कि आप केवल वर्तमान तत्व के लिए मान चाहते हैं। [1] SQL सर्वर को बता रहा है कि आप चाहते हैं कि पहला टेक्स्ट नोड मिले (आपके पास यहां केवल एक है) लेकिन यह अभी भी आवश्यक है।

for xml . द्वारा बनाई गई स्ट्रिंग क्वेरी में एक अतिरिक्त अल्पविराम और स्ट्रिंग की शुरुआत में एक स्थान होता है और इसे निकालने की आवश्यकता होती है। यहां मैं XQuery फ़ंक्शन का उपयोग करता हूं substring सब कुछ पाने के लिए लेकिन पहले दो अक्षर।

दूसरा पैरामीटर value() डेटाटाइप निर्दिष्ट करता है जिसे वापस किया जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर उच्च उपलब्धता:SQL सर्वर फ़ेलओवर क्लस्टर इंस्टेंस स्थापित करें भाग 2

  2. SqlDataReader का धीमा प्रदर्शन

  3. SQL:पूर्णनाम फ़ील्ड से प्रथम, मध्य और अंतिम नाम पार्स करें

  4. SQL सर्वर डायग्नोस्टिक्स चलाने के लिए 4 युक्तियाँ

  5. SQL सर्वर में पिछले महीने के रिकॉर्ड प्राप्त करें