sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan konverteres indlejret hierarki af xml til sql-tabel

Hvad med dette (jeg erklærede @input at være en XML-datatypevariabel med dit XML-indhold - udskift i overensstemmelse hermed):

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)

Du gentager stort set alle /ROOT/WrapperElement/ParentElemet noder (som Parent(Elm) pseudo-tabel), og for hver af disse indtastninger laver du derefter en CROSS APPLY for de underordnede elementer indeholdt i det ParentElement og plukke de nødvendige oplysninger ud.

Det burde virke - håber jeg!




  1. Hvorfor får jeg JPEG-fejl 42, når den er gemt i en database?

  2. MySQL Row 30153 blev skåret af GROUP_CONCAT() fejl

  3. ORA-04091 - Hvordan kan jeg ændre en tabel, som en trigger udløses på?

  4. Sammensat primær nøgle sql relation