【问题标题】:Truly empty element with sql server for xml-directive带有用于 xml 指令的 sql server 的真正空元素
【发布时间】:2009-10-21 10:52:31
【问题描述】:

如何在 sql server (2005) 中使用 for xml 指令创建一个真正空的 xml 元素?

例子:

select
    ''
for xml path('element'), root('elements')

输出:

<elements><element></element></elements>

但我真正想要的是:

<elements><element /></elements>

【问题讨论】:

    标签: sql-server xml sql-server-2005 for-xml


    【解决方案1】:

    添加类型指令,然后在子查询中运行它。

    像这样:

    select
    (
        select
            ''
        for xml path('element'), type
    )
    for xml path('elements')
    

    【讨论】:

      【解决方案2】:
      select
          null
      for xml path('element'), root('elements')
      

      【讨论】:

      • 这是一个很好的建议,让它适用于空字符串而不是 null,然后可以执行 nullif(@string, '')。
      【解决方案3】:

      您只需要知道该值是否为空,例如:ISNULL(Field, '')

      像这样:

      DECLARE @T table
      (
        ID int identity primary key,
        Name nvarchar(10)
      )
      INSERT INTO @T (Name)
          SELECT 'Name1'
          UNION ALL
          SELECT NULL
      
      -- @Result1
      SELECT  ID AS Id
              ,ISNULL(Name, '') AS Name
      FROM @T
      FOR XML PATH ('Person')
      
      -- @Result2
      DECLARE @Result2 XML = ( SELECT
                                  ID AS Id
                                  ,ISNULL(Name, '') AS Name
                              FROM @T
                              FOR XML PATH ('Person'))
      SELECT @Result2;
      

      结果1:

      <Person>
        <Id>1</Id>
        <Name>Name1</Name>
      </Person>
      <Person>
        <Id>2</Id>
        <Name></Name>
      </Person>
      

      结果2:

      <Person>
        <Id>1</Id>
        <Name>Name1</Name>
      </Person>
      <Person>
        <Id>2</Id>
        <Name />
      </Person>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-14
        • 2017-12-22
        • 1970-01-01
        • 2018-04-19
        • 2016-11-24
        • 2013-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多