Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2008:Ganti nama elemen menggunakan XML DML?

Seperti kata pepatah, "Dimana ada kemauan di situ ada jalan"

Berikut dua metodenya: yang pertama adalah mengganti xml sebelumnya dengan xml baru yang dibuat dari aslinya dengan nama elemen baru. Dalam contoh saya, saya telah mengubah Legs/Leg menjadi Limbs/Limb ini bisa menjadi sangat rumit untuk apa pun kecuali skema paling sederhana

Dan kedua, pendekatan yang lebih tepat untuk menggabungkan insert dan delete.

Saya telah menggabungkannya menjadi satu contoh sederhana:

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. MSSQL dengan python 2.7

  2. Fungsi vs Prosedur Tersimpan di SQL Server

  3. Bagaimana saya dapat mengautentikasi di SQL SERVER 2008 dengan Pengguna Direktori Aktif tetapi tanpa Otentikasi Windows

  4. Daftar Format Tanggal Tersedia dengan CONVERT() di SQL Server

  5. Perbaiki Msg 8116 "Tanggal tipe data argumen tidak valid untuk argumen 1 fungsi substring" di SQL Server