sql >> Database >  >> RDS >> Sqlserver

Hoe lees ik xml in t-sql?

Ervan uitgaande dat u deze XML in een T-SQL-variabele hebt, kunt u dit codefragment gebruiken:

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)

Dit geeft me een output van:

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

De aanpak is de volgende:

  • pak de lijst met <item> knooppunten onder <root> als uw eerste "lijst met XML-knooppunten" met de eerste .nodes() XQuery-methode en extraheer de waarde van de <key> XML-element in dat XML-fragment in Key1

  • pak de "geneste" lijst met XML-knooppunten in dat XML-fragment, met behulp van de value/params/item XPath, om de onderliggende rijen te krijgen - en de waarden te extraheren uit <key> en <value> van die geneste onderliggende XML-fragmenten naar Key2 en ItemValue




  1. Substring vervangen door PostgreSQL UPDATE

  2. Java - JDBC executeUpdate() werkt niet

  3. SQL Sentry is nu SentryOne

  4. Wat is het MySQL-equivalent van STUFF() in SQL Server?