xQuery基于单个属性的值列表删除节点

时间:2015-03-31 14:35:02

标签: sql tsql sql-server-2012 xquery xquery-sql

我们说我们有这个简单的XML结构:

<myXML>
    <data>
        <column value="1" />
        <column value="2" />
        <column value="3" />
        <column value="4" />
        <column value="5" />
        <column value="6" />
        <column value="7" />
        <column value="8" />
        <column value="9" />
        <column value="10" />
    </data>
    <data>
        <column value="1" />
        <column value="2" />
        <column value="3" />
        <column value="4" />
        <column value="5" />
        <column value="6" />
    </data>
    <data>
        <column value="3" />
        <column value="4" />
        <column value="5" />
        <column value="6" />
        <column value="7" />
    </data>
</myXML>

我需要使用XML modify语句从特定的值列表中删除所有节点,例如(1,4,6,8,9)。

现在我正在使用以下语句(它是动态构建的):

myXML.modify('delete for $Node in /data/column where ($Node/[@value=1]) or ($Node/[@value=3]) or ($Node/[@value=4]) return $Node')

但是当我有大量的值时,它会降低查询的性能。 还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

其中$ Node / value =(1,2,3,9,12)

如果值为1,则为2,为3,为9或为12

,则

为真