Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

XML में 2 रैपर होने पर सामग्री नहीं पढ़ सकता

समस्या का आपके एक्सएमएल डेटा के आसपास "रैपर" की संख्या से कोई लेना-देना नहीं है। समस्या यह है:आपका पहला नमूना एक 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);

तब आपको परिणाम मिलेंगे....

इस एक्सएमएल नेमस्पेस घोषणा के बिना, आपकी क्वेरी ठीक काम करेगी - दो रैपर या अधिक कोई फर्क नहीं पड़ता ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql कनेक्शन कनेक्शन स्ट्रिंग में 3 सेकंड टाइमआउट के बावजूद 15 सेकंड प्रतीक्षा करता है

  2. मापदंडों के बिना SQL इंजेक्शन से बचना

  3. पैरेंट-चाइल्ड चेन के लिए SQL क्वेरी

  4. SQL सर्वर 2016 में STRING_SPLIT ():फॉलो-अप #2

  5. तालिका परिवर्तन के लिए SQL सर्वर प्रदर्शन स्तंभ परिवर्तन डेटा प्रकार बदलता है