使用FOR XML从SQL Server 2008 R2返回空元素或空字段作为<element />

J B*_*une 5 xml sql sql-server sql-server-2008-r2

我正在使用SQL Server 2008 R2运行查询FOR XML PATH.我唯一的问题是我想要显示所有元素,即使它们是NULL并且我想要返回的空(或null)元素

<MyElement />
Run Code Online (Sandbox Code Playgroud)

不是

<MyElement></MyElement>
Run Code Online (Sandbox Code Playgroud)

Mik*_*son 5

您可以在字段列表中的子查询中查询字段,使用for xml,创建两个版本的空元素.

declare @T table
(
  ID int identity primary key,
  Name nvarchar(10)
)

insert into @T(Name)
select 'Name 1' union all
select null union all
select 'Name 2'

select ID,
       (select Name as '*' for xml path(''), type) as Name,
       (select Name as '*' for xml path('Name'), type)
from @T
for xml path('row')
Run Code Online (Sandbox Code Playgroud)

结果:

<row>
  <ID>1</ID>
  <Name>Name 1</Name>
  <Name>Name 1</Name>
</row>
<row>
  <ID>2</ID>
  <Name></Name>
  <Name />
</row>
<row>
  <ID>3</ID>
  <Name>Name 2</Name>
  <Name>Name 2</Name>
</row>
Run Code Online (Sandbox Code Playgroud)