sql >> データベース >  >> RDS >> Sqlserver

t-sqlでxmlを読み取る方法は?

    このXMLがT-SQL変数に含まれているとすると、次のコードスニペットを使用できます。

    DECLARE @input XML = '...(your XML here).....'
    
    SELECT
        Key1 = Item.value('(key)[1]', 'int'),
        Key2 = Item2.value('(key)[1]', 'int'),
        ItemValue = Item2.value('(value)[1]', 'varchar(50)')
    FROM 
        @input.nodes('/root/item') AS T(Item)
    CROSS APPLY
        item.nodes('value/params/item') AS T2(Item2)
    

    これにより、次の出力が得られます:

    Key1  Key2  ItemValue
     1     1     value
     1     2     value2
     1     3     value3
     2     4     value4
     2     5     value5
     2     6     value6  
    

    アプローチは次のとおりです。

    • <item>のリストを取得します <root>の下のノード 最初の.nodes()を使用した最初の「XMLノードのリスト」として XQueryメソッド、および<key>の値を抽出します そのXMLフラグメント内のXML要素をKey1

    • value/params/itemを使用して、そのXMLフラグメント内のXMLノードの「ネストされた」リストを取得します。 XPath、子行を取得し、<key>から値を抽出します および<value> それらのネストされた子XMLフラグメントからKey2へ およびItemValue




    1. Postgresデータベースでの独特のタイムゾーン処理

    2. 5分ごとに更新されるマテリアライズドビューの作成

    3. 2つのテーブルからクエリを実行するときに外部キーを使用する方法

    4. Echo JSonclickfill関数AJAXが機能しない