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

SQL में बहुस्तरीय नेस्टिंग के साथ XML को पार्स करें

मान लें कि आपके पास आपका XML एक SQL सर्वर वैरिएबल में है जिसे @XML . कहा जाता है , आप मूल XQuery . का उपयोग कर सकते हैं SQL सर्वर 2005 में समर्थन और इसे और अधिक सुरुचिपूर्ण ढंग से और कुशलता से करने के लिए नया:

DECLARE @XML XML = '...(your XML here).....' 

SELECT
    RootID = @xml.value('(/Root/@ID)[1]', 'int'),
    ConditionSetOperator = XC.value('@Operator', 'varchar(50)'),
    ConditionID =  XC2.value('@ID', 'int'),
    ConditionOperator = XC2.value('@Operator', 'varchar(50)')
FROM 
    @Xml.nodes('//ConditionSet') AS XT(XC)
CROSS APPLY
    xc.nodes('Condition') AS XT2(XC2)

यह मुझे

. का आउटपुट देता है

XQuery ऑपरेटरों जैसे .nodes() . के साथ या .value() , आप आसानी से एक XML दस्तावेज़ को रिलेशनल डेटा में "श्रेड" कर सकते हैं और आवश्यकतानुसार स्टोर कर सकते हैं।

@xml.nodes('//ConditionSet') . पर पहली कॉल प्रत्येक मिलान नोड के लिए एक "छद्म" तालिका मिलेगी - इसलिए प्रत्येक <ConditionSet> नोड "छद्म" तालिका में वापस आ जाएगा XT कॉलम के रूप में XC , और फिर मैं .value() जैसे XQuery विधियों का उपयोग करके उस XML खंड से आसानी से विशेषताएँ (या XML तत्व) प्राप्त कर सकता हूँ ।

या मैं उप-नोड्स की सूची भी ले सकता हूं <Condition> उनमें से प्रत्येक के लिए <ConditionSet> नोड्स - CROSS APPLY . का उपयोग करके दूसरी कॉल के साथ .nodes()




  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 2008 पर Sequelize.js के साथ पेजिनेट करें (जो FETCH का समर्थन नहीं करता है)

  2. SAP IQ को SQL सर्वर से कनेक्ट करें

  3. क्वेरी प्रोफाइलिंग 101 - हाँ, यह वास्तव में आपके SQL सर्वर प्रदर्शन में सुधार कर सकता है

  4. मैं पंक्ति से कॉलम में पूर्वानुमान वर्ष डेटा कैसे दिखा सकता हूं?

  5. क्या वास्तविक समय में 2 SQL सर्वर डेटाबेस को सिंक्रनाइज़ करना संभव है