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. SQLワークベンチがすべてのクエリで常にnull値でいっぱいの行を返すのはなぜですか?

    2. Mysql:過去7日間の結果

    3. PostgreSQL:実行中のクエリ並列処理

    4. Railsテストスイートの実行中にMySqlからの照合エラーの不正な組み合わせ