多个条件的 XQuery UNION

XQuery UNION of multiple criteria

您如何在 XQuery (SQL Server 2012) 中编写代码来执行具有多个条件的 .exist

Declare @x xml = '
    <row ParentID="45" ObjectID="0" Node="root.local.navigation[7]" itemKey="page" itemValue="Confirmation" itemType="string" />
    <row ParentID="45" ObjectID="0" Node="root.local.navigation[7]" itemKey="visited" itemValue="false" itemType="bool" />'

-- These work fine
SELECT @x.exist('/row[@Node eq "root.local.navigation[7]"]')
SELECT @x.exist('/row[@itemValue eq "Confirmation"]')

但是当我运行下面的returns错误

XQuery [exist()]: The XQuery syntax 'union' is not supported.

SELECT @x.exist('/row[@Node eq "root.local.navigation[7]"] | /row[@itemValue eq "Confirmation"]')

提前致谢。

在这种情况下,or 应该可以正常工作,因为它做同样的事情。

SELECT @x.exist('/row[@Node eq "root.local.navigation[7]" or @itemValue eq "Confirmation"]')

使用 /row[... or ...] 是您描述的问题的解决方案。您提到您使用 /row[... and ...] 获得了想要的结果。在这种情况下,您还可以使用以下方法,连续应用多个过滤器,每个过滤器构建一个较窄的序列:

/row[...][...]