Получить значение узла XML с условием, используя сервер SQL - PullRequest
0 голосов
/ 15 декабря 2011

Я раньше не работал с XML в базе данных, поэтому мне нужна помощь. Мне нужно получить значение, где имя равно "sv-SE" из XML для ряда строк.

XML выглядит так:
Ряд 1

<cultures>
  <culture name="sv-SE">Sverige</culture>
  <culture name="en-GB">Sweden</culture>
</cultures>

Строка 2

<cultures>
  <culture name="sv-SE">Norge</culture>
  <culture name="en-GB">Norway</culture>
</cultures>

Ожидаемый результат этого запроса будет

Sverige
Norge

Когда зовут "sv-SE"

select tblCountry.name.?? --XmlColumn
from tblCountry

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011
declare @T table
(
  ID int identity,
  XMLCol xml
)

insert into @T values
('<cultures>
  <culture name="sv-SE">Sverige</culture>
  <culture name="en-GB">Sweden</culture>
</cultures>')

insert into @T values
('<cultures>
  <culture name="sv-SE">Norge</culture>
  <culture name="en-GB">Norway</culture>
</cultures>')

select XMLCol.value('(/cultures/culture[@name="sv-SE"])[1]', 'varchar(20)')
from @T

Если вы хотите использовать другие языки без переписывания запроса, вы можете использовать функцию sql:variable.

declare @Lang varchar(5)
set @Lang = 'sv-SE'

select XMLCol.value('(/cultures/culture[@name=sql:variable("@Lang")])[1]', 'varchar(20)')
from @T
0 голосов
/ 15 декабря 2011

Это было давно для меня тоже ... Попробуйте:

SELECT xmlCol.query('cultures//culture[@name=sv-SE]')   
FROM   myTable

Вот документ о запросах столбцов XML с помощью SQLServer2005

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...