T-SQL を使用して XML データを反復処理する簡単な方法があるかどうかお尋ねしたいと思います。
私のxmlは次のようになります:
<node_1>
<set attribute4="text">
<CONDS>
<COND variable="a" value="text1" attribute3="text1"> //if a == text1
<COND variable="b" value="text1" attribute3="text1"> //(and)b == text 1(and)
<COND variable="c" value="text1" attribute3="text1"/> //(and)c == text1
<COND variable="c" value="text1" attribute3="text1"/> //(or)c == text2
</COND>
</COND>
<COND variable="a" value="text1" attribute3="text1"> //or a == text1
</CONDS>
</set>
</node_1>
<COND>
基本的に、すべてのノードを反復処理する必要があります。これらのノードは、実際には後で SQL クエリ条件 (WHERE
句) として使用され、入力のセットを評価します。要素とその<COND>
子はAND
条件を表し<COND>
、同じレベルにある要素は OR 条件です。
私の目的は、これらのノードを反復処理する方法を知ることです。
openxml
(xml全体をテーブルに変換する)、cte(テーブルと子孫を取得する)、ピボット(フィールドのテーブル行を列に設定する)などの一連のコードを使用してこれを達成できると思います。これらは評価に使用されます私の入力。しかし、これには and/or 条件の多くのループとインジケーターが必要になるため、混乱を招き、保守が難しくなります。
注: node_1 はサブ要素であり、繰り返すこともできます