0

xml ファイルにエクスポートしたいコンテンツ (ブログ投稿など、かなり長いテキスト) を含むテーブルがあります。

だから私はそれが欲しい:

<table>
  <column1>1231</column1>
  <column2>January 1, 2001</column2>
  <column3>some very long text will all types of characters in it</column3>
</table>

これを行うための組み込みの方法はありますか?

基本的に、各列には独自の要素があります。

コンテンツにはあらゆるタイプの文字が含まれる可能性があるため、コンテンツは CDATA であることが理想的です。

私はSQL Server 2008 Expressを持っています。

4

2 に答える 2

1

SQL Server 2005 以降では、FOR XML句を使用して、SQL クエリの結果を XML に変換できます。

たとえば、Blgd、Suit、SQFT、PDate 列を使用してテーブルを構築するとします。

SELECT * FROM building FOR XML AUTO

テーブルの内容を次の XML に変換します。

<building Bldg="1" SUit="1" SQFT="1000" PDate="2012-09-24T00:00:00" />
<building Bldg="1" SUit="1" SQFT="1500" PDate="2011-12-31T00:00:00" />

列を要素にしたい場合は、

SELECT * FROM building FOR XML AUTO, ELEMENTS

内容を次の XML に変換します。

<building>
  <Bldg>1</Bldg>
  <SUit>1</SUit>
  <SQFT>1000</SQFT>
  <PDate>2012-09-24T00:00:00</PDate>
</building>
<building>
  <Bldg>1</Bldg>
  <SUit>1</SUit>
  <SQFT>1500</SQFT>
  <PDate>2011-12-31T00:00:00</PDate>
</building>

テキスト フィールドをCDATAセクションとしてモデル化する場合は、句を使用して、こちらのガイドラインFOR XML EXPLICITに従って XML スキーマを定義する必要があります。

上記の Building テーブルTEXTに、生成された XML で CDATA セクションとしてモデル化する必要がある型の text_col 列がある場合、SELECTクエリは次のようになります。

SELECT 
    1 as Tag,
    NULL as Parent,
    Bldg AS [Building!1!Bldg!ELEMENT],
    text_col AS [Building!1!!CDATA]
FROM Building 
WHERE text_col IS NOT NULL
FOR XML EXPLICIT

結果は次のようになります。

<Building><Bldg>1</Bldg><![CDATA[From SQL Server 2005, the FOR XML clause provides a way to convert the results of an SQL query to XML.

E.g. Consider a table building with Blgd, Suit, SQFT, PDate columns.

SELECT * FROM building FOR XML AUTO

will convert the contents of table to the following XML:

<building Bldg="1" SUit="1" SQFT="1000" PDate="2012-09-24T00:00:00" />
<building Bldg="1" SUit="1" SQFT="1500" PDate="2011-12-31T00:00:00" />
If you want the columns to be elements, then

SELECT * FROM building FOR XML AUTO, ELEMENTS
would convert the contents to following XML:

<building>
  <Bldg>1</Bldg>
  <SUit>1</SUit>
  <SQFT>1000</SQFT>
  <PDate>2012-09-24T00:00:00</PDate>
</building>
<building>
  <Bldg>1</Bldg>
  <SUit>1</SUit>
  <SQFT>1500</SQFT>
  <PDate>2011-12-31T00:00:00</PDate>
</building>]]></Building>
于 2012-10-03T02:36:43.443 に答える
1

FOR XMLこれを行うには、 SQL コンストラクトを使用できます。ここを読んでください

于 2012-10-03T02:30:01.343 に答える