我正在使用从SQL Server 2008 R2运行查询FOR XML PATH。我唯一的问题是,我希望所有元素都出现,即使它们为NULL并且我希望空(或null)元素返回为
FOR XML PATH
<MyElement />
不像
<MyElement></MyElement>
您可以使用来在字段列表的子查询中查询该字段for xml,创建两个版本的空元素。
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>