sql >> Database teknologi >  >> RDS >> Sqlserver

Kan ikke læse indholdet, når XML har 2 indpakninger

Problemet har intet at gøre med antallet af "indpakninger" omkring dine XML-data. Problemet er:din første prøve definerer et XML-navneområde (xmlns="test.xsd" ) på <data> node, men din forespørgsel respekterer det ikke.

Du skal ændre din forespørgsel til at være sådan her:

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

Så får du resultater...

Uden denne XML-navneområdedeklaration ville din forespørgsel fungere fint - to indpakninger eller flere betyder overhovedet ikke noget.




  1. Alt du behøver at vide om kodningsstandarder for SQL-forespørgsler

  2. Arbejde med JavaFX UI og JDBC Applications

  3. Sådan beregnes forskellen mellem to datoer i SQLite

  4. Hvordan opretter man en relationstabel i MySQL?