3

重複の可能性:
「特殊」文字をエスケープする FOR XML PATH('') のヘルプ

私はいくつかの支援が必要です, 私の質問は以下の通りです:

STUFF(
    (
      SELECT ',' + CountDesc
      FROM Count INNER JOIN ProjectCount ON Count.Id =  ProjectCount.CountId 
      WHERE ProjectCount.ProjectId = Project.Id ORDER BY Count.CountDesc
      FOR XML PATH('')
    ), 1, 1, '') as  [Country]

このクエリを実行すると、Count テーブルのフィールドの 1 つに & が含まれ、& が として表示されます&

これが起こらないようにする方法はありますか?

前もって感謝します。

4

2 に答える 2

7

これは、XML ステートメントで結合されている文字列が XML 固有の文字を使用しているために発生しています。& に加えて、< と >、そしておそらく他の文字にも影響します。

私は通常、呼び出し後に置換を行うことでこれを修正します。

select @str = replace(@str, '&amp;', '&')

そして、追加の文字の置換をネストします。

于 2012-05-16T13:21:10.490 に答える
2

XML仕様のセクション 2.4 に従って&、いくつかの特別な場合 (コメントまたは CDATA セクション内など) を除いて、エスケープする必要があります。&が として表示されない場合&amp;、XML は無効です。

于 2012-05-16T12:39:26.207 に答える