2

SQL-Server にテーブルがあり、XML が 1 つの列に格納されています。

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>

ここで、すべての列を 1 つの大きな 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 に答える