Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да конвертирате вложена йерархия на xml в sql таблица

Какво ще кажете за това (декларирах @input да бъде променлива тип XML данни с вашето XML съдържание - заменете съответно):

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)

Вие основно итерирате всички /ROOT/WrapperElement/ParentElemet възли (като Parent(Elm) псевдо таблица) и за всеки от тези записи след това правите CROSS APPLY за дъщерните елементи, съдържащи се вътре в този ParentElement и извадете необходимата информация.

Трябва да работи - надявам се!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Увеличаване на размера на базата данни на SQL Server с помощта на хронология на архивиране

  2. Динамично променяне на връщания тип на функция

  3. SQL Server Log Shipping &Disaster Recovery Installation and Configuration -1

  4. Динамично създаден SQL срещу параметри в SQL Server

  5. Да се ​​приложи като върху всички колони, без да се посочват имена на всички колони?