避免在SQL-Server中自动创建XML标记

时间:2013-05-27 13:49:37

标签: sql sql-server xml

我在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>

有没有办法避免为列名创建标签?

2 个答案:

答案 0 :(得分:3)

使用*作为列别名。

Columns with a Name Specified as a Wildcard Character

select  
   MyContent as [*]
from MyTable
for xml path('')

答案 1 :(得分: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>