Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为sql中的空/空值列生成带有打开和关闭标记的XML?_C#_Sql_Json_Xml - Fatal编程技术网

C# 如何为sql中的空/空值列生成带有打开和关闭标记的XML?

C# 如何为sql中的空/空值列生成带有打开和关闭标记的XML?,c#,sql,json,xml,C#,Sql,Json,Xml,我正在使用SQLXML。我想为sql中的空/空值列生成带有open和close标记的XML。请查找下表并查询: 表: 环境管理计划: 环境管理计划详情: +-------+------------+----------------+ | empid | empaddress | empemail | +-------+------------+----------------+ | 1 | Chennai | mail1@mail.com | | 2 | Mad

我正在使用SQLXML。我想为sql中的空/空值列生成带有open和close标记的XML。请查找下表并查询:

表:

环境管理计划:

环境管理计划详情:

+-------+------------+----------------+
| empid | empaddress |    empemail    |
+-------+------------+----------------+
|     1 | Chennai    | mail1@mail.com |
|     2 | Madurai    | mail2@mail.com |
|     3 | Mumbai     | NULL           |
+-------+------------+----------------+
Sql查询:

select A.empid,A.empname,
(select B.empaddress,isnull(B.empemail,'') as empemail from empdetail B where A.empid=B.empid  for xml path('EmployeeDetails'),type) 
from emp A 
where A.empid=1 for xml path('root')
此查询提供以下预期数据:

<root>
  <empid>1</empid>
  <empname>Arul</empname>
  <EmployeeDetails>
    <empaddress>Chennai</empaddress>
    <empemail>mail1@mail.com</empemail>
  </EmployeeDetails>
</root>
<root>
  <empid>3</empid>
  <empname>Nivi</empname>
  <EmployeeDetails>
    <empaddress>Mumbai</empaddress>
    <empemail></empemail>
  </EmployeeDetails>
</root>

1.
海芋
钦奈
mail1@mail.com
但是当我移动到empid 3时,这个查询会给出这个标签:

<root>
  <empid>3</empid>
  <empname>Nivi</empname>
  <EmployeeDetails>
    <empaddress>Mumbai</empaddress>
    <empemail />
  </EmployeeDetails>
</root>

3.
尼维
孟买
但我想要打开和关闭标记,即使列值为NULL。如下图所示:

<root>
  <empid>1</empid>
  <empname>Arul</empname>
  <EmployeeDetails>
    <empaddress>Chennai</empaddress>
    <empemail>mail1@mail.com</empemail>
  </EmployeeDetails>
</root>
<root>
  <empid>3</empid>
  <empname>Nivi</empname>
  <EmployeeDetails>
    <empaddress>Mumbai</empaddress>
    <empemail></empemail>
  </EmployeeDetails>
</root>

3.
尼维
孟买
是表示空字段的标准方式

可以使用空格或其他值替换该值:

select e.empid, e.empname,
       (select ed.empaddress, coalesce(ed.empemail, ' ') as empemail
         from empdetail ed
         where e.empid = ed.empid
         for xml path('EmployeeDetails'), type
        ) 
from emp e
where e.empid = 3
for xml path('root')

是一个dbfiddle。

根据Xml规范,右尖括号中的标记名是可选的。所以不应该有任何理由改变你的代码。网络库不会给出您要求的结果。我会让一切保持原样的。兄弟,一切正常。所以,我需要给单个空间,而不是空的空间。谢谢,兄弟。