从XML属性获取Id列

时间:2014-04-28 21:14:30

标签: sql xml

我有一个具有ProductId列和字符串列的表。字符串列保存和xml字符串,如下所示:

<Attributes><ProductVariantAttribute ID="149"><ProductVariantAttributeValue><Value>224</Value></ProductVariantAttributeValue></ProductVariantAttribute></Attributes>
<Attributes><ProductVariantAttribute ID="150"><ProductVariantAttributeValue><Value>225</Value></ProductVariantAttributeValue></ProductVariantAttribute></Attributes>

但此列不是XML列。

我想要查询此列并根据值标记之间的值获取行的ProductId。所以我有225但我想在该列中获得ProductId值。

任何实现这一目标的方法?谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

select d.value('(//ProductVariantAttribute/@ID)[1]', 'int') val
from (select id, cast(xmlstring as xml) data from xmldata) d
cross apply data.nodes('//ProductVariantAttributeValue[Value[1] = 225]') data(d)