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

Tidak dapat membaca konten saat XML memiliki 2 pembungkus

Masalahnya tidak ada hubungannya dengan jumlah "pembungkus" di sekitar data XML Anda. Masalahnya adalah:sampel pertama Anda mendefinisikan ruang nama XML (xmlns="test.xsd" ) pada <data> simpul, tetapi kueri Anda tidak menghargai itu.

Anda perlu mengubah kueri Anda menjadi seperti ini:

-- Using the query() method
;WITH XMLNAMESPACES (DEFAULT 'test.xsd')
SELECT 
    T.customer.query('id').value('.', 'INT') AS customer_id,
    T.customer.query('name').value('.', 'VARCHAR(20)') AS customer_name
FROM 
    @data.nodes('data/subdata/customer') AS T(customer);

Maka Anda akan mendapatkan hasil....

Tanpa deklarasi namespace XML ini, kueri Anda akan berfungsi dengan baik - dua pembungkus atau lebih tidak masalah sama sekali..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tiga Kemenangan Kinerja SQL Server yang Mudah

  2. Cara mendapatkan catatan terakhir per grup dalam SQL

  3. Bagaimana cara meneruskan Parameter Bernilai Tabel (Parameter seperti Array) ke Prosedur Tersimpan di Microsoft SQL Server 2008 R2 menggunakan JDBC?

  4. Temukan semua string yang memiliki setidaknya X karakter, urutkan berdasarkan kemiripan

  5. Bagaimana saya bisa membuat kueri ini untuk menerima nama tabel dinamis?