开发者社区> 问答> 正文

使用T-SQL查询从XML提取数据

我有一个带有以下列的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 *'的操作数

展开
收起
祖安文状元 2020-01-03 16:34:22 526 0
1 条回答
写回答
取消 提交回答
  • 您的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)')
    
    2020-01-03 16:34:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载