我们试图根据我们提供的值过滤一组XML。SQL Server 2008 XPath
在我们的数据库的XML字段中,我们有以下XML,如果传递数字“5052095050830”,我们需要在XML中找到这个特定的节点。我们提供的号码可能存在多次。
任何机构可以提供一些示例SQL来协助吗?
感谢
<Attributes>
<ProductVariantAttribute ID="4387">
<ProductVariantAttributeValue>
<Value>5052095050830</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
<ProductVariantAttribute ID="9999">
<ProductVariantAttributeValue>
<Value>5052095050830</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
<ProductVariantAttribute ID="4388">
<ProductVariantAttributeValue>
<Value>104401330A</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
<ProductVariantAttribute ID="4389">
<ProductVariantAttributeValue>
<Value>6905</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
<ProductVariantAttribute ID="4390">
<ProductVariantAttributeValue>
<Value>6906</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
<ProductVariantAttribute ID="4391">
<ProductVariantAttributeValue>
<Value>Monday, October 27, 2008</Value>
</ProductVariantAttributeValue>
</ProductVariantAttribute>
</Attributes>
谢谢 - 我几乎没有了。我试图让这样的工作。这是要么零结果。我究竟做错了什么? 'DECLARE @Barcode VARCHAR SELECT @Barcode = '5052095050830' SELECT * FROM Nop_ProductVariantAttributeCombination WHERE AttributesXml.exist('/属性/ ProductVariantAttribute/ProductVariantAttributeValue /值[文本()= “SQL:可变(@Barcode)” ]')= 1' – ajbrun 2011-04-15 13:24:18
@Adrian:不确定 - 但你应该尝试使用'sql:variable':'/ Value [text()= sql:variable(@Barcode)]'' - 你也可以想在声明它的时候给你的'@ Barcode'变量一个长度 - 否则它是'VARCHAR(1)',我相信... – 2011-04-15 14:03:27