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

एसक्यूएल सर्वर 2008:एक्सएमएल डीएमएल का उपयोग कर एक तत्व का नाम बदलें?

जैसा कि कहा जाता है, "जहाँ चाह है वहाँ राह है"

यहां दो विधियां दी गई हैं: पहला यह है कि पिछले एक्सएमएल को नए तत्व नाम के साथ मूल से निर्मित एक नए एक्सएमएल के साथ प्रतिस्थापित करना है। मेरे उदाहरण में मैंने पैर/पैर को अंग/अंग में बदल दिया है, यह किसी भी चीज़ के लिए बहुत जटिल हो सकता है लेकिन सबसे सरल स्कीमा

और दूसरी बात, इन्सर्ट और डिलीट के संयोजन का अधिक उपयुक्त तरीका।

मैंने उन्हें एक साधारण उदाहरण में संयोजित किया है:

declare @xml as xml = '<animal species="Mouse">
  <legs>
    <leg>Front Right</leg>
    <leg>Front Left</leg>
    <leg>Back Right</leg>
    <leg>Back Left</leg>
  </legs>
</animal>'

set @xml = (select 
     t.c.value('@species', 'varchar(max)') as '@species'
    ,(select
     ti.C.value('.', 'varchar(max)') 
from @Xml.nodes('//animal/legs/leg') ti(c) for xml path('limb'), /* root('limb'), */type) as    limbs   
from @xml.nodes('//*:animal') t(c) for xml path('animal'), type)

select @xml;

while (@xml.exist('/animal/limbs/limb') = 1) begin
    /*insert..*/
    set @xml.modify('
            insert <leg>{/animal/limbs/limb[1]/text()}</leg>
            before (/animal/limbs/limb)[1]
        ');
    /*delete..*/
    set @xml.modify('delete (/animal/limbs/limb)[1]');
end

set @xml.modify('
        insert <legs>{/animal/limbs/leg}</legs>
        before (/animal/limbs)[1]
    ');
set @xml.modify('delete (/animal/limbs)[1]');

select @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. ORDER BY क्लॉज विचारों, इनलाइन कार्यों, व्युत्पन्न तालिकाओं में अमान्य है

  3. SQL पुनरावर्ती क्वेरी कैसे डिज़ाइन करें?

  4. SSRS सब्सक्रिप्शन ईमेल को डुप्लिकेट करना

  5. प्रदाता नामित पाइप प्रदाता त्रुटि 40 SQL सर्वर त्रुटि 2 के लिए एक कनेक्शन नहीं खोल सका