Как я могу выбрать строки, используя xpath для столбца XML? - PullRequest
1 голос
/ 13 декабря 2011

У меня есть таблица со столбцом с именем Description, который содержит XML, например:

<Parent>
  <Child Target="A" Id="123456">
       <SpecialCode Target="I"  Value="2530138" />
  </Child>
</Parent>

Если я хочу установить параметр с именем @value, который представляет атрибут Value в этом xml,

Как мне SELECT строк из MyTable, где столбец Description имеет атрибут SpecialCode, равный @value?

DECLARE @value varchar(20);
SET @value = '44555'
SELECT ....
FROM MyTable

1 Ответ

3 голосов
/ 13 декабря 2011

Как насчет:

SELECT (list of columns)
FROM dbo.MyTable
WHERE [Description].exist('/Parent/Child/SpecialCode[@Value=sql:variable("@value")]') = 1

Если ваш XML-столбец находится в другом столбце, вы будете использовать:

SELECT (list of columns)
FROM dbo.MyTable t1
INNER JOIN dbo.MyTable t2 ON t1.ID = t2.ID
WHERE t2.[Description].exist('/Parent/Child/SpecialCode[@Value=sql:variable("@value")]') = 1

Просто добавьте псевдонимы к своим таблицам, правильно объедините их идобавьте в столбец XML соответствующий псевдоним таблицы ....

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