我有一个具有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值。
任何实现这一目标的方法?谢谢!
答案 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)