Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2008:Zmienić nazwę elementu za pomocą XML DML?

Jak mówi przysłowie, „Gdzie jest wola, jest sposób”

Oto dwie metody: pierwszym jest po prostu zastąpienie poprzedniego xml nowym xml skonstruowanym z oryginału z nową nazwą elementu. W moim przykładzie zmieniłem Nogi/Nogi na Kończyny/Kończyny, co może być bardzo skomplikowane dla wszystkiego poza najprostszym schematem

Po drugie, bardziej odpowiednie podejście polegające na łączeniu wstawiania i usuwania.

Połączyłem je w jeden prosty przykład:

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. Nie można zarejestrować domyślnej instancji MSSQLSERVER w SQL Server 2008

  2. Nowy sposób kopiowania plików w SQL Server 2019

  3. jak podłączyć serwer sql za pomocą sterownika JTDS w systemie Android

  4. Zalecana metoda importowania pliku .csv do programu Microsoft SQL Server 2008 R2?

  5. Funkcja SUMA nie dodaje się poprawnie