Выбор индивидуального xml node с использованием SQL У меня есть большая заметка XML со многими узлами. есть ли способ, чтобы я мог выбрать только один node и все его содержимое из большего XML? Я использую sql 2005 Ответ 1 Вы должны использовать метод query(), если хотите получить часть своего 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> Если вам нужно значение из определенного node, вы должны использовать метод value(). select @XML.value('(/root/row2/value)[1]', 'int') Результат: 2 Update: Если вы хотите уничтожить свой XML в несколько строк, вы используете метод nodes(). Чтобы получить значения: 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>
Ответ 1 Вы должны использовать метод query(), если хотите получить часть своего 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> Если вам нужно значение из определенного node, вы должны использовать метод value(). select @XML.value('(/root/row2/value)[1]', 'int') Результат: 2 Update: Если вы хотите уничтожить свой XML в несколько строк, вы используете метод nodes(). Чтобы получить значения: 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>