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

Jak przekonwertować zagnieżdżoną hierarchię XML na tabelę sql?

Co powiesz na to (zadeklarowałem @input być zmienną typu danych XML z zawartością XML - zastąp odpowiednio:

SELECT
    Parent.Elm.value('(@ID)[1]', 'int') AS 'ID',
    Parent.Elm.value('(Title)[1]', 'varchar(100)') AS 'Title',
    Parent.Elm.value('(Description)[1]', 'varchar(100)') AS 'Description',
    Child.Elm.value('(@ID)[1]', 'int') AS 'ChildID',
    Child.Elm.value('(Title)[1]', 'varchar(100)') AS 'ChildTitle',
    Child.Elm.value('(StartDate)[1]', 'DATETIME') AS 'StartDate',
    Child.Elm.value('(EndDate)[1]', 'DATETIME') AS 'EndDate'
FROM
    @input.nodes('/ROOT/WrapperElement/ParentElement') AS Parent(Elm)
CROSS APPLY
    Parent.Elm.nodes('ChildElement') AS Child(Elm)

Zasadniczo iterujesz po wszystkich /ROOT/WrapperElement/ParentElemet węzły (jako Parent(Elm) pseudotabeli) i dla każdego z tych wpisów wykonujesz CROSS APPLY dla elementów potomnych zawartych w tym ParentElement i wyciągnij niezbędne informacje.

Powinno działać - mam nadzieję!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze sposoby użycia instrukcji SQL DELETE w tabeli SQL

  2. Jak wykryć i zapobiec nieoczekiwanemu wzrostowi bazy danych SQL Server TempDB

  3. System.Data.SqlClient.SqlException:niepoprawna składnia w pobliżu „=”

  4. Jak korzystać z funkcji partycji według i porządkowania według funkcji over?

  5. Powielanie wierszy na podstawie wartości kolumny w każdym wierszu