Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa mendapatkan daftar nama elemen dari nilai XML di SQL Server

Anda dapat melakukan ini dengan bersih dengan XQuery dan CTE rekursif (tanpa 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)

Ini tidak benar-benar melakukan banyak keajaiban XQuery, tetapi setidaknya semuanya sebaris, tidak memerlukan prosedur tersimpan, izin khusus, dll.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CAST(DATETIME AS DATE) melalui klausa WHERE

  2. Menggunakan kembali SqlCommand?

  3. 10 Fakta Tentang Pemantauan Kinerja Basis Data yang Mungkin Mengejutkan Anda

  4. Periksa Email Gagal di SQL Server (T-SQL)

  5. Ikhtisar jenis SQL Join dengan contoh