多个条件的 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[...][...]
您如何在 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[...][...]