आपकी समस्याएं:
-
आप
SelectChild
. के आउटपुट का उपयोग करने का प्रयास करते हैं , जो कि XML प्रकार का है, सामग्री . के रूप में विशेषता का@ListDirectChildren
. आप इस स्थान पर एक्सएमएल का उपयोग नहीं कर सकते हैं, इसलिए इसे सामान्य पाठ के रूप में संभाला (और बच निकला) है। क्या आप एक तरह की पुनरावर्ती चाइल्ड सूची बनाने का प्रयास कर रहे हैं? -
अपनी बाहरी क्वेरी में आपने XML को
VARCHAR(MAX)
. पर डाला (बीटीडब्ल्यू:हमेशाNVARCHAR
का उपयोग करें एक्सएमएल के संबंध में)। फिर से आप इंजन को इस पाठ को पाठ के रूप में मानने के लिए बाध्य करेंगे और इसलिए इससे बचेंगे। -
आप किसी मान की कमी को व्यक्त करने के लिए स्ट्रिंग "null" जोड़ने का प्रयास करते हैं। लेकिन एक्सएमएल अलग तरह से काम करता है:ए। XML में तत्व पूरी तरह से गायब है:इसे क्वेरी करने से
NULL
वापस आ जाएगा , यह ठीक है।बी। कुछ नियमों के लिए तत्व होना चाहिए, लेकिन खाली होना चाहिए:
<ListDirectChildren></ListDirectChildren>
या<ListDirectChildren />
(जिसका अर्थ बिल्कुल वही है)। नोड केtext()
को क्वेरी करें और आपकोNULL
मिलता है , यह भी ठीक है।सी। कुछ नियमों के लिए आप तत्व को
NULL
. के रूप में चिह्नित करना चाहते हैं .XSINIL
. का प्रयोग करें
empty
की विविधताओं के लिए इसे आज़माएं और null
:
DECLARE @x XML=
'<root>
<testempty1 />
<testempty2></testempty2>
</root>';
SELECT @x.value('(/root/testempty1)[1]','nvarchar(max)') AS testempty1_Content
,@x.value('(/root/testempty1/text())[1]','nvarchar(max)') AS testempty1_Text
,@x.value('(/root/testempty2)[1]','nvarchar(max)') AS testempty2_Content
,@x.value('(/root/testempty2/text())[1]','nvarchar(max)') AS testempty2_Text
,@x.value('(/root/NotExistingElement)[1]','nvarchar(max)') AS NotExistingElement_Content
,@x.value('(/root/NotExistingElement/text())[1]','nvarchar(max)') AS NotExistingElement_Text
नतीजा:
Content Text
testempty1 "" NULL
testempty2 "" NULL
NotExistingElement NULL NULL
XSINIL
. के लिए इसे आजमाएं
SELECT NULL AS test FOR XML RAW, ELEMENTS XSINIL
इसे पाने के लिए
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<test xsi:nil="true" />
</row>
मेरा सुझाव:
यह प्रश्न
उम्मीद है कि हल हो गया है। कृपया एक नया प्रश्न शुरू करें जहां आप अपने नमूना परिदृश्य में कुछ और डेटा जोड़ते हैं ताकि एकाधिक बच्चों को प्रतिबिंबित किया जा सके, इस प्रश्न के लिए एक लिंक रखें और अपेक्षित आउटपुट बताएं (एक्सएमएल कैसा दिखना चाहिए)।