Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak czytać xml w t-sql?

Zakładając, że masz ten kod XML w zmiennej T-SQL - możesz użyć tego fragmentu kodu:

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)

Daje mi to wynik:

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

Podejście jest następujące:

  • weź listę węzły pod jako twoja pierwsza "lista węzłów XML" z pierwszym .nodes() Metoda XQuery i wyodrębnij wartość Element XML w tym fragmencie XML do Klucz1

  • pobierz "zagnieżdżoną" listę węzłów XML wewnątrz tego fragmentu XML, używając value/params/item XPath, aby uzyskać wiersze podrzędne - i wyodrębnij wartości z i z tych zagnieżdżonych podrzędnych fragmentów XML do Key2 i ItemValue




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Równoważnik funkcji Split w T-SQL?

  2. Dołącz wyniki z dwóch zapytań i wyprowadź jako pojedynczą tabelę

  3. SQL Server BULK INSERT z systemu Linux

  4. CS2001 Brakujący plik AssemblyAttributes.cs podczas wykonywania pakietu SSIS wdrożonego na serwerze

  5. Laravel:Wygenerowany SQL zgłasza błąd tylko w określonych tabelach