Проблемът няма нищо общо с броя на "обвивките" около вашите XML данни. Проблемът е:първата ви проба дефинира XML пространство от имена (xmlns="test.xsd"
) на <data>
възел, но вашата заявка не зачита това.
Трябва да промените заявката си така, че да бъде нещо подобно:
-- 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);
Тогава ще получите резултати...
Без тази XML декларация за пространство от имена вашата заявка ще работи добре - две обвивки или повече нямат никакво значение.