XPath получает значение атрибута «A» на основе атрибута «B» в SQL Server XML - PullRequest
4 голосов
/ 09 января 2012

У меня есть этот XML в SQL Server

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

Я хочу выбрать атрибут значения каждого узла «add» с ключом = «images»

Теперь у меня есть:

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

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 09 января 2012

То, что у вас работает, работает нормально, если вы просто указываете размер для вашего nvarchar, извлеченного из XML.

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

Здесь я указал 100, вы можете установить его на что-то более подходящее для вашегоситуация.Без размера столбец будет иметь размер 1.

2 голосов
/ 09 января 2012

Используйте это выражение XPath :

(//data
    /add
      [@key="images"]
         /@value
            [contains(.,"img")]
 )
 [1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...