SQL 服务器中 XQuery 的 Exist() 子句中的多个条件

Multiple conditions in Exist() clause of XQuery in SQL Server

我在 SQL 服务器中使用 XQuery,我的问题是:如何在 Exist() 子句中使用两个或多个条件?

例如:

[dbo].[A].[XmlList]:

<Property>
  <Value Name="Patt1">Pval1</Value>
  <Value Name="Patt1">Pval999</Value>
  <Value Name="patt2">Pval2</Value>
</Property>

Select查询:

SELECT *
FROM A
WHERE XmlList.exist(N'/Property/Value [@Name="Patt1" and value="Pval1"]')

@Name是属性,value是要查找的节点值

您可以使用 [@Name="Patt1"] 表达式检查属性值,然后使用 [text()="Pval1"] 表达式检查节点值。

SELECT *
FROM A
WHERE XmlList.exist(N'/Property/Value[@Name="Patt1"][text()="Pval1"]')=1

您也可以使用这样的嵌套结构:

SELECT *
FROM A
WHERE XmlList.exist(N'/Property[Value[@Name="Patt1"]="Pval1"]')=1

表达式值[@Name="Patt1"] 检查属性值。 表达式 [Value[...]="Pval1"] 检查节点值。