sql >> Databáze >  >> RDS >> Sqlserver

Nelze číst obsah, když má XML 2 obaly

Problém nemá nic společného s počtem „obalů“ kolem vašich dat XML. Problém je v tom, že váš první příklad definuje názvový prostor XML (xmlns="test.xsd" ) na <data> uzel, ale váš dotaz to nerespektuje.

Musíte změnit svůj dotaz, aby byl něco takového:

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

Pak získáte výsledky....

Bez této deklarace jmenného prostoru XML by váš dotaz fungoval dobře – na dvou nebo více obalech vůbec nezáleží.




  1. jak uložit datum a čas pomocí JPA v Oracle?

  2. Nainstalujte Azure Data Studio na Ubuntu 18.04

  3. Jak vložit výsledky uložené procedury do dočasné tabulky na serveru SQL Server

  4. Jak zobrazit číslo stránky v těle zprávy SSRS 2008 R2?