从XML中选择元素

Kyl*_*yle 3 xml sql-server xpath sql-server-2008

鉴于以下内容:

declare @samplexml as xml
set @samplexml = '<root><someelement><another /><somethingElse>test</somethingElse></someelement></root>'

select
  @samplexml.value('/root[1]','nvarchar(max)')
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

test

但我想要结果:

<root><someelement><another /><somethingElse>test</somethingElse></someelement></root>

如何选择实际的XML元素?我也尝试过:

select
  @samplexml.value('/root[1]','XML')
Run Code Online (Sandbox Code Playgroud)

但我得到了错误The data type 'XML' used in the VALUE method is invalid..

mar*_*c_s 6

只需使用该.query()方法而不是.value():

SELECT @samplexml.query('/root[1]')
Run Code Online (Sandbox Code Playgroud)

要么

SELECT @samplexml.query('.')
Run Code Online (Sandbox Code Playgroud)

这将返回与给定的XPath表达式匹配的元素(及其内容),并将其作为XML类型返回