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

Parsing XML dengan bertingkat bertingkat di SQL

Dengan asumsi Anda memiliki XML Anda dalam variabel SQL Server yang disebut @XML , Anda dapat menggunakan XQuery asli dukungan di SQL Server 2005 dan yang lebih baru untuk melakukan ini dengan lebih elegan dan efisien:

DECLARE @XML XML = '...(your XML here).....' 

SELECT
    RootID = @xml.value('(/Root/@ID)[1]', 'int'),
    ConditionSetOperator = XC.value('@Operator', 'varchar(50)'),
    ConditionID =  XC2.value('@ID', 'int'),
    ConditionOperator = XC2.value('@Operator', 'varchar(50)')
FROM 
    @Xml.nodes('//ConditionSet') AS XT(XC)
CROSS APPLY
    xc.nodes('Condition') AS XT2(XC2)

Ini memberi saya output dari

Dengan operator XQuery seperti .nodes() atau .value() , Anda dapat dengan mudah "menghancurkan" dokumen XML menjadi data relasional dan menyimpannya sesuai kebutuhan.

Panggilan pertama ke @xml.nodes('//ConditionSet') akan mendapatkan tabel "pseudo" untuk setiap node yang cocok - jadi setiap <ConditionSet> node akan dikembalikan dalam tabel "pseudo" XT sebagai kolom XC , dan kemudian saya dapat dengan mudah mengambil atribut (atau elemen XML) dari fragmen XML tersebut menggunakan metode XQuery seperti .value() .

Atau saya bahkan dapat mengambil daftar sub-simpul <Condition> untuk masing-masing <ConditionSet> node - menggunakan CROSS APPLY dengan panggilan kedua ke .nodes()




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menerapkan Pemformatan Bersyarat ke Angka di SQL Server menggunakan FORMAT()

  2. Tetapkan Profil Publik Default untuk Database Mail (SSMS)

  3. Perhitungan tipe data SQL Server Float vs desimal

  4. Mengubah penyortiran Database SQL Server

  5. Padding Kiri di SQL Server – 3 LPAD() Setara