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

निष्पादन योजनाओं से एक्सएमएल कतरन

एक बहुत ही सीधा तरीका यह हो सकता है (जबकि @x क्या आपकी XML-निष्पादन-योजना है):

DECLARE @x XML=
N'<root>
    <ElementE1 AttributA1="A1-text belongs to E1[1]" OneMore="xyz">E1-Text 2</ElementE1>
    <ElementE1 AttributA1="A1-text belongs to E1[2]">E1-Text 2</ElementE1>
    <ElementParent>
      <subElement test="sub"/>
      Free text
    </ElementParent>
  </root>';

DECLARE @idoc INT;
EXEC sp_xml_preparedocument @idoc OUTPUT, @x;   
SELECT * FROM OPENXML (@idoc, '*');   
EXEC sp_xml_removedocument @idoc;  

परिणाम (सभी कॉलम नहीं)

+----+----------+----------+--------------+------+--------------------------+
| id | parentid | nodetype | localname    | prev | text                     |
+----+----------+----------+--------------+------+--------------------------+
| 0  | NULL     | 1        | root         | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 2  | 0        | 1        | ElementE1    | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 3  | 2        | 2        | AttributA1   | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 13 | 3        | 3        | #text        | NULL | A1-text belongs to E1[1] |
+----+----------+----------+--------------+------+--------------------------+
| 4  | 2        | 2        | OneMore      | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 14 | 4        | 3        | #text        | NULL | xyz                      |
+----+----------+----------+--------------+------+--------------------------+
| 5  | 2        | 3        | #text        | NULL | E1-Text 2                |
+----+----------+----------+--------------+------+--------------------------+
| 6  | 0        | 1        | ElementE1    | 2    | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 7  | 6        | 2        | AttributA1   | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 15 | 7        | 3        | #text        | NULL | A1-text belongs to E1[2] |
+----+----------+----------+--------------+------+--------------------------+
| 8  | 6        | 3        | #text        | NULL | E1-Text 2                |
+----+----------+----------+--------------+------+--------------------------+
| 9  | 0        | 1        | ElementParent| 6    | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 10 | 9        | 1        | subElement   | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 11 | 10       | 2        | test         | NULL | NULL                     |
+----+----------+----------+--------------+------+--------------------------+
| 16 | 11       | 3        | #text        | NULL | sub                      |
+----+----------+----------+--------------+------+--------------------------+
| 12 | 9        | 3        | #text        | 10   | Free text                |
+----+----------+----------+--------------+------+--------------------------+

id स्पष्ट रूप से दिखाता है, कि एल्गोरिथम चौड़ाई पहले है , कोई id=1 नहीं है (क्यों कभी) और nodetype तत्वों, विशेषताओं और (फ्लोटिंग) पाठ के बीच अंतर करने की अनुमति देता है। prev स्तंभ श्रृंखला में एक भाई-बहन की ओर इशारा करता है। अनुपलब्ध स्तंभ नाम स्थान से संबंधित हैं...

दृष्टिकोण के साथ FROM OPENXML पुराना है, लेकिन यह दुर्लभ स्थितियों में से एक है, यह अभी भी बहुत उपयोगी हो सकता है...

आपको आईडी और पेरेंट आईडी के साथ एक सूची मिलती है जिसे आप एक पुनरावर्ती सीटीई के साथ पूछ सकते हैं... यह इस बात पर निर्भर करता है कि आप इसके साथ बाद में क्या करना चाहते हैं...



  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 Server 2008 क्वेरी के साथ DATEADD मिनट चुनें

  2. कोई संग्रहीत कार्यविधि पर पुनरावृति कैसे कर सकता है, किसी अन्य संग्रहीत कार्यविधि के भीतर से .... बिना कर्सर के?

  3. PHP में MSSQL में इन्सर्ट आईडी कैसे प्राप्त करें?

  4. टी-एसक्यूएल में इंडेक्सऑफ फ़ंक्शन

  5. एकाधिक तालिकाओं में SQL अद्वितीय बाधा