2013-03-08 59 views
-1
<Person> 
    <id>12</id> 
    <Fname>Phil</Fname> 
    <Lname></Lname> 
    //or 
    <id>13</id> 
    <Fname>Phil</Fname> 
    <Lname>0</Lname> 
</Person> 

我从SQL Server 2005中使用的XML路径( '人')空标签

在这里,在这个XML结构,而不是

<Lname></Lname><Lname>0</Lname>我需要生成XML为<Lname/>

+1

请提供更多的细节在图书馆和语言的使用。 – 2013-03-08 07:37:12

+0

从XML的角度来看,''和''都是空标记并且是等效的。所以如果没有办法指定数据库应该如何创建空标签,我不会感到惊讶。 – 2013-03-08 07:39:14

+0

select * from table_name for xml path('Person') – Bharath 2013-03-08 07:39:33

回答

0

使用XML数据类型时,将空标记转换为EmptyElemTag。直接使用for xml不会那样做。

要获得想要的结果,您可以在另一个for xml path查询的字段列表中将您的查询用作子查询。

select (
     select id, 
       Fname, 
       Lname 
     from Person 
     for xml path('Person'), type 
     ) 
for xml path('') 

SQL Fiddle

+0

插入Person值(13,'Phil',NULL); – Bharath 2013-03-08 08:46:57

+0

当列中有空值而不是0或''时,这个概念不起作用。我是否需要返回并在所有列中使用ISNULL概念 – Bharath 2013-03-08 08:47:19

+0

@Bharath当值为'null'时,您想要输出什么? – 2013-03-08 09:07:32