#sql #xml
#sql #xml
Вопрос:
<suggestions>
<suggestion>
<description>plate.</description>
</suggestion>
<suggestion>
<description>snack.</description>
</suggestion>
</suggestions>
DECLARE @Suggestions TABLE (
[Description] VARCHAR(800)
)
У меня есть вышеуказанный xml в переменной типа XML в моей хранимой процедуре
как я могу вставить каждый текст между тегами описания
в таблицу @Предложения
Ответ №1:
Попробуйте это:
DECLARE @input XML = '<suggestions>
<suggestion>
<description>plate.</description>
</suggestion>
<suggestion>
<description>snack.</description>
</suggestion>
</suggestions>'
DECLARE @Suggestions TABLE ([Description] VARCHAR(800))
INSERT INTO @Suggestions
SELECT
Sugg.value('(description)[1]', 'varchar(800)')
FROM
@input.nodes('/suggestions/suggestion') AS Tbl(Sugg)
SELECT * FROM @Suggestions
@input.nodes()
Выражение в основном превращает каждый <suggestion>
узел в строку в вызываемой «псевдо» таблице Tbl(Sugg)
. Затем из этих «строк» (каждая в основном представляет собой еще один фрагмент XML) вы выбираете значение, которое вас интересует — здесь содержимое <description>
XML-элемента внутри этого XML-фрагмента.
Комментарии:
1. 1 Я собирался опубликовать аналогичный ответ… затем зазвонил телефон 🙂
Ответ №2:
Вы можете использовать LINQ-to-XML для получения всех предложений, затем вы можете вставить эти данные в таблицу.