2012-10-03 46 views
0

前段時間我問這個問題: TSQL for xml xml-tag just onceTSQL的XML防止和空阱自閉標籤

我現在已經是和空阱自閉標籤不應該出現在XML中的問題。

我發現的東西,但它不工作像我期望:http://www.sqlmusings.com/2009/04/12/sqlxml-how-to-work-with-xml-elements-or-nodes-in-sql-server/

http://blogs.msdn.com/b/denisruc/archive/2006/05/17/600250.aspx

我在每一個潛在的空標籤寫的「$$」,並在年底我試着刪除所有帶有「$$」的標籤:

SET @persons.modify('delete (//$$)') 

但是這種方式不行。

如何使用XQuery刪除空標記和自關閉標記或防止它們出現在TSQL for xml中?

回答

1

這取決於你如何編寫查詢,但所以如果你想忽略你可以使用nullif得到一個空值,而不是空的空值不包括在生成的XML通常null值。

declare @Person table 
(
    Name varchar(20) 
) 

insert into @Person values ('Person1') 
insert into @Person values ('Person2') 
insert into @Person values ('') 
insert into @Person values (null) 

select '2012' as period, 
     (
     select nullif(Person.Name, '') as 'users/person' 
     from @Person as Person 
     for xml path('') , type 
     ) 
for xml path(''), root('company') 

結果:

<company> 
    <period>2012</period> 
    <users> 
    <person>Person1</person> 
    </users> 
    <users> 
    <person>Person2</person> 
    </users> 
</company> 
+0

感謝很多的Mikael。 NULLIF非常適合我的情況。 –