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

SQL सर्वर 2012:पदानुक्रमित XML डेटा - एस्केप वर्ण

आपकी समस्याएं:

  1. आप SelectChild . के आउटपुट का उपयोग करने का प्रयास करते हैं , जो कि XML प्रकार का है, सामग्री . के रूप में विशेषता का @ListDirectChildren . आप इस स्थान पर एक्सएमएल का उपयोग नहीं कर सकते हैं, इसलिए इसे सामान्य पाठ के रूप में संभाला (और बच निकला) है। क्या आप एक तरह की पुनरावर्ती चाइल्ड सूची बनाने का प्रयास कर रहे हैं?

  2. अपनी बाहरी क्वेरी में आपने XML को VARCHAR(MAX) . पर डाला (बीटीडब्ल्यू:हमेशा NVARCHAR का उपयोग करें एक्सएमएल के संबंध में)। फिर से आप इंजन को इस पाठ को पाठ के रूप में मानने के लिए बाध्य करेंगे और इसलिए इससे बचेंगे।

  3. आप किसी मान की कमी को व्यक्त करने के लिए स्ट्रिंग "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>

मेरा सुझाव:

यह प्रश्न

उम्मीद है कि हल हो गया है। कृपया एक नया प्रश्न शुरू करें जहां आप अपने नमूना परिदृश्य में कुछ और डेटा जोड़ते हैं ताकि एकाधिक बच्चों को प्रतिबिंबित किया जा सके, इस प्रश्न के लिए एक लिंक रखें और अपेक्षित आउटपुट बताएं (एक्सएमएल कैसा दिखना चाहिए)।




  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. CTE कर्सर/व्युत्पन्न तालिका/उपश्रेणियों/अस्थायी तालिका आदि से बेहतर क्यों है?

  3. इनर जॉइन के साथ दृश्य पर पूर्ण-पाठ खोज सक्षम करें

  4. 'Xp_cmdshell' SQL सर्वर सक्षम करें

  5. FIRSTROW पैरामीटर के साथ SQL बल्क इंसर्ट निम्न पंक्ति को छोड़ देता है