У меня есть большая заметка XML со многими узлами.выбор отдельного узла XML с использованием SQL
Есть ли способ, которым я могу выбрать только один узел и все его содержимое из большего XML?
Я использую SQL 2005
У меня есть большая заметка XML со многими узлами.выбор отдельного узла XML с использованием SQL
Есть ли способ, которым я могу выбрать только один узел и все его содержимое из большего XML?
Я использую SQL 2005
Вы должны использовать query() Method, если вы хотите, чтобы получить часть вашего XML.
declare @XML xml
set @XML =
'
<root>
<row1>
<value>1</value>
</row1>
<row2>
<value>2</value>
</row2>
</root>
'
select @XML.query('/root/row2')
Результат:
<row2>
<value>2</value>
</row2>
Если вы хотите получить значение из определенного узла следует использовать value() Method.
select @XML.value('(/root/row2/value)[1]', 'int')
Результат:
2
Update:
Если вы хотите, чтобы кромсать ваш XML в несколько строк, которые вы используете nodes() Method.
Чтобы получить значения:
declare @XML xml
set @XML =
'
<root>
<row>
<value>1</value>
</row>
<row>
<value>2</value>
</row>
</root>
'
select T.N.value('value[1]', 'int')
from @XML.nodes('/root/row') as T(N)
Результат:
(No column name)
1
2
Чтобы получить весь XML:
select T.N.query('.')
from @XML.nodes('/root/row') as T(N)
Результат:
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>
приятно, что, если каждый из узлов строки был только, и я хотел получить каждый узел строки последовательно? –
kacalapy
Я хочу, чтобы результаты () не целое число, но я хочу получить row1 xml chunk, а затем row2 ... для всех строк – kacalapy
@kacalapy - Обновлен ответ на то, как вы отбросили XML до нескольких строк. –