У меня есть таблица с полем XML. Типичный XML, который он содержит;Работа с типом данных SQL Server XML
<things>
<Fruit>
<imageId>39</imageId>
<title>Apple</title>
</Fruit>
<Fruit>
<imageId>55</imageId>
<title>Pear</title>
</Fruit>
<Fruit>
<imageId>76</imageId>
<title>Grape</title>
</Fruit>
</things>
В моей таблице у меня есть около 50 строк, я озабочен только с двумя полями, Омид (интермедиат первичный ключ) и omText (мои данные XML).
То, что я пытаюсь достичь способ сказать, по всем данным XML во всей таблице ... дайте мне все xmlElements, где название X. Или дайте мне счетчик все элементы, которые используют imageId из 55.
Я использую функции данных VALUE и QUERY типа XML для извлечения данных.
select omID,
omText.query('/things/Fruit')
,cast('<results>' + cast(omText.query('/things/Fruit') as varchar(max)) + '</results>' as xml) as Value
from dbo.myTable
where omText.value('(/things/Fruit/imageId)[1]', 'int') = 76
который работает только там, где идентификатор, который я ищу, является первым в документе. Кажется, он не ищет все xml.
По сути, набор результатов возвращается с одной строкой для каждой записи в ТАБЛИЦЕ, если мне кажется, что мне нужно иметь одну строку для каждого совпадающего ELEMENT ... Не совсем точно, как начать писать группу для этого.
Я начинаю чувствовать, что я делаю это сложнее, чем нужно ...... мысли & идеи пожалуйста.
Это ..... Вы звезда. Cheers :) Не думайте, что вы можете указать мне в сторону каких-либо приличных ресурсов для чтения XML-манипуляций SQL ??? – GordonB
Рад, что я могу помочь, Гордон! Лучшая статья SQL XML DML, которую я нашел до сих пор, довольно старая, но по-прежнему очень полезная: http://www.15seconds.com/Issue/050803.htm –
Или это здесь может быть: http://www.sqlservercentral.com/ Статьи/SQL + сервер + 2005/XML / –