XPath获取属性值A'基于属性' B'在SQL Server xml中

时间:2012-01-09 12:08:05

标签: sql xml sql-server-2008 xpath

我在SQL Server中有这个XML

<data>
<add key="images" value="image/path/img.gif" />
<data>

我想用key =“images”

选择每个“add”节点的value属性

我现在拥有的是:

SELECT ID, Data from Items 
where Data.value('(//data/add[@key="images"]/@value)[1]', 'nvarchar') Like '%img%'

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

如果您只是指定从XML检索到的nvarchar的大小,那么您的工作正常。

SELECT ID, Data
from Items 
where Data.value('(//data/add[@key="images"]/@value)[1]', 'nvarchar(100)') Like '%img%'

我已指定100您可以将其设置为更适合您情况的内容。如果没有大小,列的大小将为1

答案 1 :(得分:2)

使用此XPath表达式

(//data
    /add
      [@key="images"]
         /@value
            [contains(.,"img")]
 )
 [1]