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

नाम स्थान पर क्रॉस लागू करें, उप-नोड्स डुप्लिकेट रिकॉर्ड लौटाते हैं

इसे आजमाएं:

;WITH XMLNAMESPACES ('http://3ecompany.com/webservices/catalogitemxml' as CI)
SELECT 
    Identifier = CI.value('(CI:ProductIdentifiers[1]/CI:Identifier)[1]', 'varchar(9)'),
    CAS_Number = Ingred.value('(CI:Cas)[1]', 'varchar(20)'),
    Chemical_Name = Ingred.value('(CI:ChemicalName)[1]', 'varchar(100)')
FROM
    @XmlTable
CROSS APPLY
    XMLData.nodes('/ArrayOfCatalogItem/CatalogItem/CI:Msds') AS XT(CI)
CROSS APPLY
    CI.nodes('CI:Ingredients') AS XT18(Ingred)

मुझे प्रत्येक <Msds> . के लिए XML अंशों की एक सूची मिलती है नोड, और इससे मैं ProductIdentifiers . लेता हूं जानकारी। साथ ही, इस नोड से, मुझे <Ingredients> के लिए उप-XML-टुकड़ों की एक सूची भी मिलती है नोड्स, और इनमें से विस्तृत जानकारी प्राप्त करें।

मेरा आउटपुट इस तरह दिखता है:




  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. समय को घंटे या 10 मिनट के हिसाब से कैसे समूहित करें

  3. SaveChanges () डेटा सहेज नहीं रहा है

  4. SQL सर्वर में Oracle के PRIOR द्वारा कनेक्ट का अनुकरण

  5. टी-एसक्यूएल में प्रिंट स्टेटमेंट