0

前段时间我问了这个问题: TSQL for xml xml-tag just once

现在我的问题是空标签和自闭合标签不应该出现在 xml 中。

我在这里这里找到了可能的解决方法,但它不像我预期的那样工作。

我还尝试在每个潜在的空标签中写入“$$”,然后最后我尝试删除所有包含“$$”的标签:

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

但这种方法也不起作用。

如何使用 XQuery 删除空标签和自闭合标签或防止它们出现在 TSQL for xml 中?

4

1 回答 1

1

这取决于您如何编写查询,但通常null值不包含在生成的 XML 中,因此如果您想省略空值,您可以使用nullif获取空值而不是空值。

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>
于 2012-10-03T10:21:39.477 回答