【问题标题】:How do I prevent SQL Server from concatenating XML results with the same name如何防止 SQL Server 连接具有相同名称的 XML 结果
【发布时间】:2010-01-27 16:54:12
【问题描述】:

我正在尝试使用 SQL 2008 中的 XML 功能生成 XML 文档,但我遇到了一个问题,即文档要求两个节点具有相同的名称,但 SQL Server 会自动连接具有相同名称的任何节点。

例如:

<Location>
  <Address>Some Street</Address>
  <Address>Some other info</Address>
</Location>

问题是当我尝试通过执行下面的 SQL 来执行此操作时:

<Location>
  <Address>Some StreetSome other info</Address>
</Location>

这是我选择数据的方式:

 SELECT CustomerStreet1 AS 'location/address',
        CustomerStreet2 AS 'location/address'
   FROM Customers
FOR XML PATH('Customer')

虽然在两个地址字段之间选择了另一个节点可以满足我的要求,但我需要能够将两个地址节点保持在一起。

【问题讨论】:

  • 输出合并列数据的原因是列别名相同。

标签: sql-server xml tsql


【解决方案1】:
WITH    customers (id, CustomerStreet1, CustomerStreet2) AS
        (
        SELECT  1, 'Some Street', 'Some other info'
        UNION ALL
        SELECT  2, 'Second Street', NULL
        )
SELECT  id,
        (
        SELECT  *
        FROM    (
                SELECT  CustomerStreet1 AS Address
                UNION ALL
                SELECT  CustomerStreet2
                ) q
        FOR XML PATH(''), TYPE
        )
FROM    customers 
FOR XML PATH('Customers')

【讨论】:

  • 谢谢,这正是我要找的。​​span>
猜你喜欢
  • 2023-01-16
  • 1970-01-01
  • 2019-05-08
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多