sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan læser man xml i t-sql?

Forudsat at du har denne XML i en T-SQL-variabel - så kan du bruge dette kodestykke:

DECLARE @input XML = '...(your XML here).....'

SELECT
    Key1 = Item.value('(key)[1]', 'int'),
    Key2 = Item2.value('(key)[1]', 'int'),
    ItemValue = Item2.value('(value)[1]', 'varchar(50)')
FROM 
    @input.nodes('/root/item') AS T(Item)
CROSS APPLY
    item.nodes('value/params/item') AS T2(Item2)

Dette giver mig et output på:

Key1  Key2  ItemValue
 1     1     value
 1     2     value2
 1     3     value3
 2     4     value4
 2     5     value5
 2     6     value6  

Fremgangsmåden er følgende:

  • tag fat i listen over noder under som din første "liste over XML-noder" med den første .nodes() XQuery-metoden, og udtræk værdien af ​​ XML-element i det XML-fragment til Key1

  • tag den "indlejrede" liste over XML-noder inde i det XML-fragment ved hjælp af værdi/params/item XPath, for at hente de underordnede rækker - og udtrække værdierne fra og fra disse indlejrede underordnede XML-fragmenter til Nøgle2 og ItemValue




  1. Fix Msg 529 "Eksplicit konvertering fra datatype int til xml er ikke tilladt" i SQL Server

  2. Referencer Oracle brugerdefinerede typer over DBLINK?

  3. Sådan søger du i en SQL-tabel efter en sætning

  4. Tilføjelse af skemanavn til enhed i Spring-data?