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

XML पथ के लिए SQL सर्वर दोहराए जाने वाले नोड बनाते हैं

प्रत्येक कॉलम के लिए एक अलग आइटम नोड उत्पन्न करने के लिए मान के रूप में NULL वाला कॉलम जोड़ें।

SELECT 
  t.col1 as 'item'
 ,NULL
 ,t.col2 as 'item'
 ,NULL
 ,t.col3 as 'item' 
FROM dbo.tbl as t 
FOR XML PATH('parent'), TYPE;

परिणाम:

<parent>
  <item>1</item>
  <item>2</item>
  <item>3</item>
</parent>

एसक्यूएल फिडल

यह क्यों काम करता है?

बिना नाम वाले कॉलम टेक्स्ट नोड्स के रूप में डाले जाते हैं। इस मामले में NULL मान item . के बीच टेक्स्ट नोड के रूप में डाला जाता है नोड्स।

यदि आप NULL के बजाय वास्तविक मान जोड़ते हैं तो आप देखेंगे कि क्या हो रहा है।

SELECT 
  t.col1 as 'item'
 ,'1'
 ,t.col2 as 'item'
 ,'2'
 ,t.col3 as 'item' 
FROM dbo.tbl as t 
FOR XML PATH('parent'), TYPE;

परिणाम:

<parent>
  <item>1</item>1<item>2</item>2<item>3</item></parent>

नाम के बिना कॉलम निर्दिष्ट करने का दूसरा तरीका वाइल्डकार्ड वर्ण का उपयोग करना है * एक स्तंभ उपनाम के रूप में।

वाइल्डकार्ड कैरेक्टर के रूप में निर्दिष्ट नाम वाले कॉलम

इस मामले में वाइल्डकार्ड का उपयोग करना आवश्यक नहीं है क्योंकि NULL मानों वाले कॉलम में कॉलम नाम नहीं होता है, लेकिन यह तब उपयोगी होता है जब आप वास्तविक कॉलम से मान चाहते हैं लेकिन आप नहीं चाहते कि कॉलम नाम नोड नाम हो।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पिवट टेबल और समवर्ती कॉलम

  2. विकल्प के साथ अनंत लूप सीटीई (अधिकतम 0)

  3. SQL सर्वर में टूटी हुई वस्तुओं का पता लगाएं

  4. संयोजन संघर्ष को हल नहीं कर सकता

  5. SQL सर्वर में तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा अपडेट करें