Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nie można odczytać zawartości, gdy XML ma 2 opakowania

Problem nie ma nic wspólnego z liczbą „opakowań” wokół danych XML. Problem polega na tym, że pierwsza próbka definiuje przestrzeń nazw XML (xmlns="test.xsd" ) na <data> węzeł, ale twoje zapytanie tego nie uwzględnia.

Musisz zmienić zapytanie, aby wyglądało mniej więcej tak:

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

Wtedy otrzymasz wyniki....

Bez tej deklaracji przestrzeni nazw XML Twoje zapytanie działałoby dobrze — dwa opakowania lub więcej nie mają żadnego znaczenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie wyświetlaj pustych zestawów zwrotów

  2. Jak mogę utworzyć użytkownika w bazie danych SQL Server Express dodanej do mojego projektu?

  3. Korzystanie z SQL Server 2008 i SQL Server 2005 oraz data i godzina

  4. Ignoruj ​​niektóre kolumny podczas korzystania z BULK INSERT

  5. 11 sposobów na odzyskanie klucza podstawowego w SQL Server (przykłady T-SQL)