如何在MS SQL Server中显示空XML标记
我需要将数据导出为XML格式。为了简单起见,考虑到我有一个表<强>雇员 FName、MName和LNEY列。为了将数据导出到XML中,我编写了以下查询如何在MS SQL Server中显示空XML标记,sql,sql-server,xml,tsql,Sql,Sql Server,Xml,Tsql,我需要将数据导出为XML格式。为了简单起见,考虑到我有一个表雇员 FName、MName和LNEY列。为了将数据导出到XML中,我编写了以下查询 从Employee中为XML路径('Emp Details')、根目录('Details')选择FName、MName、LName 这将以正确的XML格式返回数据。但是,如果有任何值为NULL的行,它将跳过该列的XML标记。与以下示例一样,MName有一个NULL值,因此XML中也缺少MName的标记:- <Emp Details> &
从Employee中为XML路径('Emp Details')、根目录('Details')选择FName、MName、LName代码>
这将以正确的XML格式返回数据。但是,如果有任何值为NULL
的行,它将跳过该列的XML标记。与以下示例一样,MName有一个NULL
值,因此XML中也缺少MName的标记:-
<Emp Details>
<Details>
<FName>Rohit</Fname>
<LName>Kumar</LName>
</Details>
</Emp Details>
但是,我希望它显示为
<MName />
是否可以以这种方式显示NULL
值XML标记?
谢谢如果要在结果中包含空的MName
元素,只需在select语句中将NULL值转换为空字符串即可:
SELECT FName, coalesce(MName, '') as MName, LName
from Employee
FOR XML PATH ('Emp Details'), ROOT ('Details');
coalesce
是ANSI将空值转换为某些内容的标准方法,SQL Server接受此方法以及SQL Server特定的IsNull
如果希望在结果中包含空MName
元素,只需在select语句中将空值转换为空字符串即可:
SELECT FName, coalesce(MName, '') as MName, LName
from Employee
FOR XML PATH ('Emp Details'), ROOT ('Details');
coalesce
是ANSI将空值转换为某些内容的标准方法,SQL Server接受此方法以及SQL Server特定的IsNull
正如我在注释中提到的,使用IsNull
包装值以返回空字符串:
选择Fname,
名字,
ISNULL(MName“”)作为MName
FROM(value('Rohit','Kumar',NULL))V(FName,LName,MName)
对于XML路径('Details'),根('EmpDetails')--节点名称中不能有空格
这将返回以下XML:
罗希特
古玛
请注意,SQL Server不会使用较短的语法生成空白节点,它将显式打开和关闭标记。正如我在注释中提到的,使用ISNULL将值包装起来以返回空白字符串:
选择Fname,
名字,
ISNULL(MName“”)作为MName
FROM(value('Rohit','Kumar',NULL))V(FName,LName,MName)
对于XML路径('Details'),根('EmpDetails')--节点名称中不能有空格
这将返回以下XML:
罗希特
古玛
请注意,SQL Server不会使用较短的语法生成空白节点,它将显式打开和关闭标记。使用'
,这将强制显示节点。因此,ISNULL(MName,”)
将强制显示节点,但为空。改用'
将强制显示节点。因此,ISNULL(MName,”)
将强制节点显示,但为空。谢谢,它现在可以工作了。但是我们能否将空标记限制为
。尽管我相信,XML认为两者是一样的。@Kartikeya我在回答中提到了这一点。谢谢,它现在可以工作了。但是我们能否将空标记限制为
。尽管我相信,XML认为两者是相同的。@Kartikeya我在回答中提到了这一点。