मैं SQL Server 2012 का उपयोग कर निम्न आउटपुट उत्पन्न करना चाहता हूं:
& lt; माता-पिता & gt; & LT; आइटम & gt; 1 & lt; / मद & gt; & LT; आइटम & gt; 2 & lt; / मद & gt; & LT; आइटम & gt; 3 & lt; / मद & gt; & Lt; / माता-पिता & gt;
एक ही टेबल में तीन अलग-अलग कॉलम से (हम उन्हें कॉल 1, कॉल 2 और कॉल 3 कहते हैं)।
मैं इस क्वेरी का उपयोग करने का प्रयास कर रहा हूं: < / P>
का चयन करें t.col1 'item', t.col2 को 'item' के रूप में, t.col3 के रूप में 'item' से XML path के लिए tbl t ('parent'), TYPE
लेकिन मुझे क्या मिलता है:
& lt; माता पिता & gt; & LT; आइटम & gt; 123 & lt; / मद & gt; & Lt; / माता-पिता & gt;
मैं यहाँ क्या गलत कर रहा हूं?
एक कॉलम जोड़ें प्रत्येक कॉलम के लिए एक अलग मद नोड उत्पन्न करने के लिए मूल्य के रूप में शून्य के साथ।
SELECT t.col1 के रूप में 'item', NULL, t.col2 के रूप में ' आइटम ', नल, टी.ओ.एल. 3 3' मद 'के रूप में डीओबीटीबीएल के रूप में एक्सएमएल पाथ (' मूल ') के रूप में, प्रकार;
परिणाम:
& lt; पैरेंट & gt; & LT; आइटम & gt; 1 & lt; / मद & gt; & LT; आइटम & gt; 2 & lt; / मद & gt; & LT; आइटम & gt; 3 & lt; / मद & gt; & Lt; / माता-पिता & gt;
यह काम क्यों करता है? किसी नाम के बिना कॉलम को पाठ नोड्स के रूप में डाला जाता है इस मामले में शून्य मान को आइटम
नोड्स के बीच एक पाठ नोड के रूप में डाला जाता है।
यदि आप शून्य के बजाय वास्तविक मान जोड़ते हैं तो आप देखेंगे कि क्या हो रहा है।
-
का चयन करें t.col1 'item', '1', t.col2 को 'item', '2', 't.col3' के रूप में 'item' से dbo .टीबीएल के रूप में एक्सएमएल पाथ ('माता-पिता'), प्रकार;
परिणाम:
& lt; पैरेंट & gt; & LT; आइटम & gt; 1 & lt; / मद & gt; 1 & LT; आइटम & gt; 2 & lt; / मद & gt; 2 & lt; आइटम & gt; 3 & lt; / मद & gt; & lt; / माता-पिता & gt;
नाम के बिना एक स्तंभ निर्दिष्ट करने का एक अन्य तरीका वाइल्डकार्ड वर्ण *
को एक स्तंभ उपनाम के रूप में उपयोग करना है।
इस मामले में वाइल्डकार्ड का उपयोग करने के लिए आवश्यक नहीं है क्योंकि शून्य मूल्यों वाले स्तंभों का स्तंभ नाम नहीं है, लेकिन जब आप वास्तविक कॉलम से मान चाहते हैं, लेकिन आप स्तंभ नाम को नोड का नाम
No comments:
Post a Comment