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

मैं SQL सर्वर में किसी XML मान से तत्व नामों की सूची कैसे प्राप्त कर सकता हूं?

आप इसे XQuery और एक पुनरावर्ती CTE (कोई OPENXML . के साथ साफ-साफ कर सकते हैं) ):

DECLARE @xml xml
SET @xml = '<a><b /><c><d /><d /><d /></c></a>';

WITH Xml_CTE AS
(
    SELECT
        CAST('/' + node.value('fn:local-name(.)',
            'varchar(100)') AS varchar(100)) AS name,
        node.query('*') AS children
    FROM @xml.nodes('/*') AS roots(node)

    UNION ALL

    SELECT
        CAST(x.name + '/' + 
            node.value('fn:local-name(.)', 'varchar(100)') AS varchar(100)),
        node.query('*') AS children
    FROM Xml_CTE x
    CROSS APPLY x.children.nodes('*') AS child(node)
)
SELECT DISTINCT name
FROM Xml_CTE
OPTION (MAXRECURSION 1000)

यह वास्तव में बहुत अधिक XQuery जादू नहीं कर रहा है, लेकिन कम से कम यह सब इनलाइन है, इसके लिए किसी संग्रहीत कार्यविधियों, विशेष अनुमतियों आदि की आवश्यकता नहीं है।



  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 सर्वर (T-SQL) में REPLICATE () फ़ंक्शन कैसे काम करता है

  2. ऑब्जेक्ट 'DF__*' कॉलम '*' पर निर्भर है - int को डबल में बदलना

  3. CONVERT() दिनांक/समय से SQL सर्वर में स्ट्रिंग उदाहरणों के लिए

  4. SQL सर्वर बैकअप/रिस्टोर बनाम डिटैच/अटैच

  5. SQL सर्वर में क्वेरी डिज़ाइनर का उपयोग कैसे करें