Как выбрать данные из XML с помощью T-SQL? - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть таблица: TestXml с 2 столбцами (pk, xCol). Это мой стол:

    create table TestXml (
pk int primary key, xCol xml)
on [Primary]
insert into Store.dbo.TestXml(pk,xCol) values (1,'<docs><doc id="12"><section> Section 1</section></doc>
<doc id="123"><section> Section 1</section>
<section> Section 2</section>
</doc>
</docs>'
)

значение xml, которое я вставил, выглядит следующим образом:

   <docs>
  <doc id="12">
    <section> Section 1</section>
  </doc>
  <doc id="123">
    <section> Section 1</section>
    <section> Section 2</section>
  </doc>
</docs>

Как взять элемент "<section>", где "<doc id = "123">"?

1 Ответ

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

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

SELECT c.d.value('(.)[1]', 'varchar (100)') AS Section
FROM Store.dbo.TestXml tx
    CROSS APPLY tx.xCol.nodes('./docs/doc') AS a(b)
    CROSS APPLY a.b.nodes('./section') AS c(d)
WHERE a.b.value('(@id)[1]', 'int') = 123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...