真正的空元素与 sql server for xml-directive

发布于 2024-08-08 05:50:05 字数 349 浏览 7 评论 0原文

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

示例:

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

输出:

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

但我真正想要的是:

<elements><element /></elements>

How do I create a truly empty xml element with the for xml-directive in sql server (2005)?

Example:

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

Outputs:

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

But what I really want is:

<elements><element /></elements>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

献世佛 2024-08-15 05:50:05

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

像这样:

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

Add the type directive and then run it in a subquery.

Like this:

select
(
    select
        ''
    for xml path('element'), type
)
for xml path('elements')
天冷不及心凉 2024-08-15 05:50:05

您只需要知道该值是否为空,例如: 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;

Result1:

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

Result2:

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

You only need to know if the value is null, for ex: ISNULL(Field, '')

Like this:

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;

Result1:

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

Result2:

<Person>
  <Id>1</Id>
  <Name>Name1</Name>
</Person>
<Person>
  <Id>2</Id>
  <Name />
</Person>
千纸鹤 2024-08-15 05:50:05
select
    null
for xml path('element'), root('elements')
select
    null
for xml path('element'), root('elements')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文