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

XML नोड्स को पुनरावृत्त करने के लिए SQL चर का उपयोग कैसे करें

आपका अपना कोड सिर्फ एक और [1] . के साथ काम करेगा . फंक्शन .modify() [sql:variable(...)] . की व्याख्या नहीं कर सकता ... यह कोई भी फ़िल्टर हो सकता है, यहां तक ​​कि एक से अधिक परिणामों वाला भी... तो बस इसे इसमें बदलें:

DECLARE @xml xml = '<Root>
                      <Contacts>
                        <Contact name="John Doe" type="REG" other="value" />
                        <Contact name="Jane Doe" type="REG" other="value" />
                        <Contact name="Jennifer Doe" type="REG" other="value" />
                        <Contact name="Jane Doe" type="REG" other="value" />
                      </Contacts>
                    </Root>';
DECLARE @i int = 1
SET @xml.modify('replace value of (/Root/Contacts/Contact)[sql:variable("@i")][1]/@type with "NEW"')
SELECT @xml

लेकिन मैं एक और रास्ता अपनाऊंगा ... आप पूरी तरह से व्युत्पन्न तालिका के रूप में पढ़ सकते हैं और एक्सएमएल को इस तरह पुनर्निर्माण कर सकते हैं:

SELECT
(
    SELECT c.value('@name','nvarchar(max)') AS [@name]
          --,c.value('@type','nvarchar(max)') AS [@type]
          ,'NEW' AS [@type]
          ,c.value('@other','nvarchar(max)') AS [@other]
    FROM @xml.nodes('/Root/Contacts/Contact') AS A(c)
    FOR XML PATH('Contact'),ROOT('Contact'),TYPE
)
FOR XML PATH('Root')

दूसरा तरीका होगा FLWOR:

SELECT @xml.query('
for $r in /Root/Contacts
    return <Root><Contacts>
    {
        for $c in /Root/Contacts/Contact
           return <Contact name="{$c/@name}" type="NEW" other="{$c/@other}"/>
    }
    </Contacts></Root>
')



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इंडेक्स बनाते समय INCLUDE क्लॉज का उपयोग क्यों करें?

  2. MS SQL सर्वर अंतिम सम्मिलित आईडी

  3. PHP के माध्यम से SQL सर्वर डेटाबेस से कैसे कनेक्ट करें?

  4. SQL सर्वर फेलओवर क्लस्टर इंस्टालेशन -2

  5. DELETE CASCADE पर जोड़ने के लिए सभी विदेशी कुंजियों को बदलने के लिए SQL स्क्रिप्ट