sql >> Databasteknik >  >> RDS >> Sqlserver

Kan inte läsa innehåll när XML har 2 omslag

Problemet har ingenting att göra med antalet "omslag" runt din XML-data. Problemet är:ditt första exempel definierar ett XML-namnområde (xmlns="test.xsd" ) på <data> nod, men din fråga respekterar inte det.

Du måste ändra din fråga så att den blir ungefär så här:

-- 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);

Då får du resultat...

Utan denna XML-namnområdesdeklaration skulle din fråga fungera bra - två omslag eller fler spelar ingen roll alls.




  1. GORM skapa en post som kanske redan finns

  2. Tidsskillnad inom kontorstid

  3. Returnera endast en rad från tabellen längst till höger för varje rad i tabellen längst till vänster

  4. PostgreSQL-fråga för att lista alla tabellnamn?