2013-03-12 1 views
7

У меня есть XML-файл, где узлы, в которых мне нужны данные, все одинаковые. Я понимаю, как получить доступ к первой (или второй записи), поэтому следующий запрос дает мне только второго автора (тег <a1>). Как получить всех авторов в виде одного столбца?Использование SQL Server для получения всех данных из узлов XML с одинаковым именем

 DECLARE @MyXML XML 
     SET @MyXML = '<refworks> 
      <reference> 
       <rt>Journal Article</rt> 
       <sr>Print(0)</sr> 
       <id>869</id> 
       <a1>Aabye,Martine G.</a1> 
       <a1>Hermansen,Thomas Stig</a1> 
       <a1>Ruhwald,Morten</a1> 
       <a1>PrayGod,George</a1> 
       <a1>Faurholt-Jepsen,Daniel</a1> 
       <a1>Jeremiah,Kidola</a1> 
       <a1>Faurholt-Jepsen,Maria</a1> 
       <a1>Range,Nyagosya</a1> 
      </reference> 
     </refworks>' 

     SELECT 
      author.value('(a1)[2]', 'varchar(MAX)') AS 'Author' 
     FROM @MyXML.nodes('/refworks/reference') AS ref(author) 

ответ

12

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

SELECT 
     author.value('./text()[1]', 'varchar(MAX)') AS 'Author' 
    FROM @MyXML.nodes('//refworks/reference/child::node()') AS ref(author) 
    where author.value('local-name(.)[1]', 'varchar(100)') ='a1' 

дочерний узел ::() представляет собой ось спецификатор, который является child и :: является осью сепаратора.

Для понимания оси ребенка, которая используется для детализации в узле, можно найти в этом документе MSDN.

или manipulating xml data in sql server

Обновлены: -

Намного проще путь Вы были на правильном пути .Specify узла ребенка в ЕКЕ для фильтрации данных

SELECT 
     author.value('(.)[1]', 'varchar(MAX)') AS 'Author' 
    FROM @MyXML.nodes('/refworks/reference/a1') AS ref(author) 
+0

Высоких - большое спасибо , Можете ли вы указать мне какую-то ссылку, которая объясняет, что она делает? – user918967

+0

Дайте мне знать, если у вас все еще есть сомнения после прохождения через документы. – praveen

+0

@praveen. Пожалуйста, взгляните на мой вопрос здесь: http://stackoverflow.com/questions/27638108/how-to-get-specific-result- из-а-поиск-в-SQL-колонки малонаселенных-с-XML – SearchForKnowledge