Вы можете получить дополнительную информацию, если вы измените входящие данные. Вот пример, основанный на данных, которые вы мне дали:
/* setup storage for xml data */
declare @r table(data xml)
/* get xml data, either from string or file */
insert into @r
select cast('<events><event id="21536609" clock="24" side="away" type="yellowCard" addedTime="" videoId=""><result><![CDATA[ <b>Michael Dawson</b> - 24''<br>Yellow Card ]]> </result> </event> </events>' as xml)
--select CONVERT(xml, BulkColumn, 2) data from openrowset(Bulk 'd:\temp\f.xml', SINGLE_BLOB) [rowsetresults]
/* for each 'event' element in the source, pull out the attribute values and the first result */
select *
from (
select e.value('./@id', 'bigint') id,
e.value('./@clock', 'int') clock,
e.value('./@side', 'nvarchar(100)') side,
e.value('./@type', 'nvarchar(100)') type,
e.value('(./result/text())[1]', 'nvarchar(max)') result
from (select * from @r) t
cross apply t.data.nodes('/events/event') as t2(e)
) events
Обратите внимание, что вы получите значения в столбчатой форме против форме строки (например, ключ/значение пары, как ваш вопрос показывает). Это легко повернуть к строке, но также столбчатая форма обычно предпочтительна в сценариях SQL.
Также обратите внимание, что это только вытаскивает первый результат в каждом событии. Чтобы вытащить все результаты, вам нужно будет cross apply
на уровне элемента result
.
Похоже, вы задаете неправильный вопрос - исходные данные для этой таблицы выглядят так, как будто она имеет структуру, необходимую для решения этого вопроса гораздо более непосредственно. Не могли бы вы добавить больше контекста? – codekaizen
Я использовал openrowset для запроса xml и импорта в таблицу sql serer. Xml имеет временную шкалу футбольного матча, и каждая запись имеет описание события. Это, как он выложил: - - <событие ID = "21536609" часы = сторона = "прочь" типа "24" = "Yellowcard" addedTime = "" VideoID = ""> - - Майкл Доусон - 24' –
Yellow Card ]]>
Так что вы хотите: 'ID = 21515; side = Away; type = Цель; result = Robin Van Persie Goal'? – codekaizen