Получение уникального набора данных из полей XML в SQL 2008 R2 - PullRequest
2 голосов
/ 10 мая 2011

В настоящее время у меня есть несколько строк (скажем, около 100 для аргументов) в таблице, и в этой таблице у меня есть поле XML, которое содержит следующие данные (пример):

<cf1>summer</cf1>

.. Тогда у меня может быть другая строка или строки, содержащие:

<cf1>winter</cf1>

.. и для полноты, еще несколько строк, возможно, содержащие кратные значения:

<cf1>spring</cf1>

Итак, мой вопрос:

Как написать запрос / proc, чтобы вернуть мне уникальный набор результатов всех возможных узлов xml в моем поле xml?

Полагаю, я могу вернуть, скажем, 100 строк, а затем с помощью C # отфильтровать это ... но я предполагаю, что в SQL 2008 есть гораздо лучшие способы сделать это!

1 Ответ

1 голос
/ 10 мая 2011

Идея состоит в том, что вы используете XQuery для захвата данных в подзапросе и просто рассматриваете их как еще одну строку в таблице. Вроде таких:

SELECT DISTINCT Season
FROM
  (SELECT CAST(Xml_Field.query('data(/cf1)') AS VARCHAR) AS Season
   FROM My_Xml_Table)

Этот запрос вернет:

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