【问题标题】:TSQL for xml prevent empty- and self-closing tagsTSQL for xml 防止空标签和自闭合标签
【发布时间】:2012-10-03 09:18:15
【问题描述】:

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

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

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

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

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

但这种方法也不起作用。

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

【问题讨论】:

    标签: xml tsql tags


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多