sql >> Databáze >  >> RDS >> Sqlserver

Jak převést vnořenou hierarchii xml na sql tabulku

Co třeba tohle (deklaroval jsem @input být proměnnou datového typu XML s vaším obsahem XML – nahraďte odpovídajícím způsobem):

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)

V podstatě iterujete přes všechny /ROOT/WrapperElement/ParentElemet uzly (jako Parent(Elm) pseudo tabulka) a pro každý z těchto záznamů poté provedete CROSS APPLY pro podřízené prvky obsažené v tomto ParentElement a vyzvedněte si potřebné informace.

Mělo by to fungovat – doufám!




  1. Postgres:Jak převést řetězec json na text?

  2. MySQL 1443:co to znamená?

  3. Počet mysql počet shod regulárního výrazu na pole

  4. Oracle SQL:řazení řádku s odděleným řetězcem