我在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>
有没有办法避免为列名创建标签?
答案 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>