2

我在 SQL-Server 中有一个表,其中我将 XML 存储在一个列中。

CREATE TABLE [dbo].[MyTable](
[MyId] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
[MyContent] [xml] NULL
)

“MyContent”列中的 xml 如下所示:

<Account id="1">
    <Name>Bill</Name>
</Account>

现在我想将所有列连接到一个大 xml。我试图用 SQL-Server 中的“for xml”函数来做到这一点:

select  
   MyContent 
from MyTable
for xml path('')

创建的 XML 如下所示:

<MyContent>
   <Account id="1">
      <Name>Bill</Name>
   </Account>
</MyContent>
<MyContent>
   <Account id="2">
      <Name>John</Name>
   </Account>
</MyContent>

但这不是我需要的,我需要没有创建“MyContent”标签的 XML,所以我需要的是:

<Account id="1">
   <Name>Bill</Name>
</Account>
<Account id="2">
   <Name>John</Name>
</Account>

有什么方法可以避免为列名创建标签?

4

2 回答 2

3

用作*列别名。

名称指定为通配符的列

select  
   MyContent as [*]
from MyTable
for xml path('')
于 2013-05-27T13:59:55.780 回答
1

试试这个——

询问:

INSERT INTO dbo.MyTable(MyContent)
VALUES 
    ('<Account id="1"><Name>Bill</Name></Account>'), 
    ('<Account id="2"><Name>Jack</Name></Account>')

SELECT [*] = MyContent 
FROM dbo.MyTable
FOR XML PATH ('')

输出:

<Account id="1">
  <Name>Bill</Name>
</Account>
<Account id="2">
  <Name>Jack</Name>
</Account>
于 2013-05-27T14:01:01.627 回答