Как получить все значения из этого XML в SQL - PullRequest
1 голос
/ 02 февраля 2012

Я пытаюсь выяснить, как получить все строковые значения из некоторого XML, переданного в SQL-запрос, и я не могу понять это, даже после просмотра нескольких примеров. Кто-нибудь может указать, где я ошибся? Спасибо

Мой XML:

DECLARE @CrewXML XML = N'<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <string>A</string>
  <string>E</string>
  <string>J</string>
</ArrayOfString>'

И пока у меня есть этот код:

select 
    t.ArrayOfString.value('string[1]','varchar(max)')
    from 
    @CrewXML.nodes('/ArrayOfString') as t(ArrayOfString)

Получается только первая строка XML, которая, как мне кажется, связана с [1], однако я не могу найти способ получить все значения внутри элемента.

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

1 Ответ

4 голосов
/ 02 февраля 2012

Добавьте string к функции узлов и получите значение из текущего узла, используя ..

select 
    t.ArrayOfString.value('.','varchar(max)')
    from 
    @CrewXML.nodes('/ArrayOfString/string') as t(ArrayOfString)
...