समस्या का आपके एक्सएमएल डेटा के आसपास "रैपर" की संख्या से कोई लेना-देना नहीं है। समस्या यह है:आपका पहला नमूना एक 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);
तब आपको परिणाम मिलेंगे....
इस एक्सएमएल नेमस्पेस घोषणा के बिना, आपकी क्वेरी ठीक काम करेगी - दो रैपर या अधिक कोई फर्क नहीं पड़ता ..