我有一个带有以下列的SQL Server表
ID, Attributes
Attributes数据为XML格式,并且其中有多个值。我想从该列中提取特定值。我尝试了以下查询。但这给了错误。有人可以帮忙吗
SELECT
ID,
CAST (identityiq.spt_link.attributes AS XML).value('Attributes/Map/entry[@key="c"]/@value','nvarchar(200)')
FROM
identityiq.spt_link
WHERE
id = '8aae1d856c57c7bd016c5a0e16d00267'
Attributes列内的XML数据
<Attributes>
<Map>
<entry key="Privileged"/>
<entry key="Service"/>
<entry key="c" value="US"/>
</Map>
</Attributes>
错误
消息2389,级别16,状态1,第10行 XQuery [value()]:'value()'需要单例(或空序列),找到类型为'xdt:untypedAtomic *'的操作数
您的XML可能如下所示,在这种情况下,Xpath匹配多个节点
<Attributes>
<Map>
<entry key="c" value="Foo"/>
<entry key="c" value="Bar"/>
</Map>
</Attributes>
你需要使用
.value('(Attributes/Map/entry[@key="c"])[1]/@value','nvarchar(200)')
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。