Извлечь поле из SQL XML


Я искал на этом веб-сайте и в интернете, но, кажется, ничего не могу найти для этого простого запроса. Я просто хочу отобразить слово, относящееся к термину , например, используя столбец xml ниже Тест будет извлечен.

Столбец xml выглядит следующим образом:

<A>
  <resources id="1" resourceType="Template" term="TEST" version="1" />
</A>

Я пробовал использовать следующее, но оно возвращает нули.

select 
Res.value('(/A/term)[1]','nvarchar(50)') as 'Res'

from Con
where Res is not null

Заранее благодарю вас.

2 2

2 ответа:

Попробуйте вот так

select 
Res.value('(/A/resources/@term)[1]','nvarchar(50)') as 'Res'

from Con
where Res is not null

term является атрибутом (нуждается в знаке @) внутри элемента <resources> ниже <A>. Ваш xpath не отражает это правильно...

Попробуйте это

SELECT T.tm.value('@term[1]','nvarchar(50)')  as 'Res'
FROM   Con  
CROSS APPLY Res.nodes('/A/resources') as T(tm)