Я боролся с этим некоторое время, кажется, я близок, но не совсем там. У меня есть столбец в базе данных, который выглядит следующим образом:
<document>
<items>
<item name="one">one is the first number</item>
<item name="two">two is the second number</item>
</items>
</document>
В этом примере мне нужно запросить и вернуть «два - второе число». Я также хотел бы сделать это без создания временной таблицы. В настоящее время у меня есть:
create table #test (item1 xml)
insert into #test (item1)
values ('<document> <items> <item name="one">one is the first number</item> <item name="two">two is the second number</item> </items> </document>')
select item1.value('(/document/items/item)[2]', 'nvarchar(max)') from #test
select item1.query('/document/items/item[@name="two"]') from #test
Первый выбор возвращает правильное значение, но мне нужно знать, что это второй «индекс»
Вторая возвращает то, что я хочу, но возвращает весь узел два ..
Чего мне не хватает? И есть ли простой способ использовать XML без преобразования во временную таблицу?