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"] 检查节点值。
我在 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"] 检查节点值。