sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008:Byt namn på ett element med XML DML?

Som ordspråket säger, "Där det finns en vilja finns det en väg"

Här är två metoder: den första är att helt enkelt ersätta den tidigare xml med en ny xml konstruerad från originalet med det nya elementnamnet. I mitt exempel har jag ändrat ben/ben till lemmar/lem, detta kan bli mycket komplicerat för allt annat än det enklaste schemat

Och för det andra, ett mer lämpligt sätt att kombinera infoga och radera.

Jag har kombinerat dem till ett enkelt exempel:

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. Hur man avinstallerar SQL Server Management Studio(SSMS) - SQL Server/TSQL Tutorial Del 23.1

  2. Skapar en utlösare för att uppdatera en sorterings-/ordningskolumn

  3. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -2

  4. Stänga aktiva anslutningar med RMySQL