在T-SQL中迭代XML

时间:2013-02-27 04:54:30

标签: sql sql-server xml tsql openxml

我想询问是否有一种使用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(获取表和后代)和pivot(将这些字段的行设置为列)然后用于评估我的输入。但这需要大量的循环和指标和/或条件,这使得它容易混淆和难以维护。

注意:node_1是子元素,也可以重复

0 个答案:

没有答案