2

FolderXml という XML フィールドを含む StoreFolder というテーブルがあります。各行には、次のような XML 値が含まれます。

<Folder FolderName="test" StoreName="TestStore" />

次の XML 形式でフォルダーを取得する必要があります。

<Folders>
  <Folder FolderName="test1" StoreName="TestStore1" />
  <Folder FolderName="test2" StoreName="TestStore1" />
  <Folder FolderName="test3" StoreName="TestStore1" />
</Folders>

次のSQL文を使用してみました:

SELECT   FolderXml
FROM     StoreFolder
FOR XML PATH(''), ROOT('Folders')

ただし、次の XML が出力されます。

<Folders>
  <FolderXml>
    <Folder FolderName="test1" StoreName="TestStore1" />
  </FolderXml>
  <FolderXml>
    <Folder FolderName="test2" StoreName="TestStore1" />
  </FolderXml>
  <FolderXml>
    <Folder FolderName="test3" StoreName="TestStore1" />
  </FolderXml>
</Folders>

次の形式で XML を取得する方法を教えてください (T-SQL を使用)。

<Folders>
  <Folder FolderName="test1" StoreName="TestStore1" />
  <Folder FolderName="test2" StoreName="TestStore1" />
  <Folder FolderName="test3" StoreName="TestStore1" />
</Folders>

どうもありがとう

4

3 に答える 3

3

変換/キャスト操作が欠落しているだけです:

select Convert(Xml, FolderXml)
  from StoreFolder
for xml path(''), root('Folders')

フィールドはvarchar/ nvarcharFolderXmlフィールドとして扱われ、Xmlノード内に追加されます。事前にXmlに変換して、親タグでラップされないようにしてください。

于 2012-12-07T14:17:33.567 に答える
0
select FolderName as "@foldername",StoreName as "@StoreName"
FROM StoreFolder
FOR XML PATH('Folder'),ROOT('Folder')
于 2012-12-07T13:47:45.380 に答える
0
DECLARE @T TABLE(
    FolderXml XML
)

INSERT INTO @T VALUES
('<Folder FolderName="test1" StoreName="TestStore1" />'),
('<Folder FolderName="test2" StoreName="TestStore1" />'),
('<Folder FolderName="test3" StoreName="TestStore1" />')


SELECT (SELECT T.FolderXml)
FROM @T AS T
FOR XML PATH (''), ROOT('Folders')
于 2012-12-07T14:19:57.640 に答える