一尘不染

返回空或空字段为 从SQL Server 2008 R2使用FOR XML

sql

我正在使用从SQL Server 2008 R2运行查询FOR XML PATH。我唯一的问题是,我希望所有元素都出现,即使它们为NULL并且我希望空(或null)元素返回为

<MyElement />

不像

<MyElement></MyElement>

阅读 242

收藏
2021-05-23

共1个答案

一尘不染

您可以使用来在字段列表的子查询中查询该字段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')

结果:

<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>
2021-05-23