sql >> Databasteknik >  >> RDS >> Sqlserver

Hur läser man xml i t-sql?

Om du antar att du har denna XML i en T-SQL-variabel - då kan du använda det här kodavsnittet:

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)

Detta ger mig en utdata av:

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

Tillvägagångssättet är följande:

  • ta tag i listan med noder under som din första "lista över XML-noder" med den första .nodes() XQuery-metoden och extrahera värdet för XML-element i det XML-fragmentet till Key1

  • ta tag i den "kapslade" listan med XML-noder inuti det XML-fragmentet med värde/params/objekt XPath, för att hämta de underordnade raderna - och extrahera värdena från och från dessa kapslade underordnade XML-fragment till Key2 och ItemValue




  1. Sökfiltrering med PHP/MySQL

  2. Hur man använder _COUNT i BaseColumns

  3. Mariadb-anslutningsklient:Åtkomst nekad för användare (med lösenord:NEJ) på mysql 8.0

  4. Konstigt minnesanvändningsmönster i C# Windows Form-appen