набрал xml в sql - это возможно? - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть таблица с типизированным полем XML. Типичный формат XML:

<root>
  <users>
      <user name="John Doe" />
      <user name="Alexander" />
   </users>
   <apps>
      <app name="Office 2010" />
      <app name="SQL Server 2005" />
   <apps>
</root>

Предполагая, что в этой таблице 25 строк с разными значениями в элементах users и apps, есть ли способ:

  1. Получить список всех пользователей в элементе / root / users для всех записей.
  2. Получить список всех пользователей + приложение для всех записей.

SQL в этой строке работает, но дает мне только первое имя пользователя.

SELECT xtbl.col1.value('(user/@name)[1]', 'varchar(100)') 
FROM mytable
     CROSS APPLY xmlcol.nodes('/root/users') AS xtbl(col1)

1 Ответ

1 голос
/ 03 декабря 2010

Функция nodes выбирает одну строку на users, но вы ищете одну строку на user.Попробуйте:

SELECT xtbl.col1.value('(@name)[1]', 'varchar(100)') 
FROM mytable
     CROSS APPLY xmlcol.nodes('/root/users/user') AS xtbl(col1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...