Извлечение атрибутов из полей XML в таблице SQL Server 2008

У меня есть таблица с несколькими столбцами, один из которых являетсяxml колонка. У меня нет пространства имен для использования в запросе. Данные XML всегда имеют одинаковую структуру для всех записей.

Выдуманные данные
create table #temp (id int, name varchar(32), xml_data xml)

insert into #temp values
(1, 'one',   '<data><info x="42" y="99">Red</info></data>'),
(2, 'two',   '<data><info x="27" y="72">Blue</info></data>'),
(3, 'three', '<data><info x="16" y="51">Green</info></data>'),
(4, 'four',  '<data><info x="12" y="37">Yellow</info></data>')
Желаемые результаты
Name    Info.x   Info.y   Info
-----   -------  -------  -------
one       42       99     Red
two       27       72     Blue
three     16       51     Green
four      12       37     Yellow
Частично работает
select Name, xml_data.query('/data/info/.').value('.', 'varchar(10)') as [Info]
from   #temp

ВозвращаетName а такжеInfo колонны. Я не могу понять, как извлечь значения атрибута без использования пространства имен. Например, следующие запросы возвращают ошибки:

Запрос 1
select Name, xml_data.query('/data/info/@x') as [Info]
from   #temp

Msg 2396, Level 16, State 1, Line 12
XQuery [#temp.xml_data.query()]: Attribute may not appear outside of an element
Запрос 2
select Name, xml_data.value('/data/info/@x', 'int') as [Info]
from   #temp

Msg 2389, Level 16, State 1, Line 12
XQuery [#temp.xml_data.value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
Запрос 3
select Name, xml_data.query('/data/info/.').value('@x', 'int') as [Info]
from   #temp

Msg 2390, Level 16, State 1, Line 9
XQuery [value()]: Top-level attribute nodes are not supported
Вопрос

Как вы пишете запрос, чтобы вернуть данные обычного столбца, и значения элемента + атрибута изxml столбец в той же таблице?

Ответы на вопрос(1)

Ваш ответ на вопрос