36

SQL Server のより大きな Select ステートメント内に次のクエリがあります。

 CONVERT(NVARCHAR(2000),stuff((SELECT '; ' + IsNull(D2.SelectedComments,'')
 FROM #StudentDetails D2
 WHERE D2.STUD_PK = A.STUD_PK AND D2.CourseNo = A.CourseNo
AND D2.Section = A.Section
FOR XML PATH('')),1,2,'')) AS SelectedComments,

この列は、 などの特定のエントリの後にいくつかの奇妙な記号を生成していますThis approach is satisfactory .&#x0D.&#x0Dがどこから来ているのかわかりません。SELECT SelectedComments FROM #StudentDetailsこの直前にやってみましたが、 .&#x0D. 誰がそれがどこから来ているのか分かりますか?

4

2 に答える 2

58

For Xml Path の使用を変更すると、アンエスケープが行われるため、Replace 関数を使用する必要はありません。

,   Stuff(
        (
        Select '; ' + IsNull( D2.SelectedComments, '' )
        From #StudentDetails As D2
        Where D2.Stud_PK = A.Stud_PK
            And D2.CourseNo = A.CourseNo
            And D2.Section = A.Section
        For Xml Path(''), type
        ).value('.', 'nvarchar(max)')
        , 1, 2, '') As SelectedComments
于 2013-05-14T15:38:42.903 に答える
7

はキャリッジ リターンです。挿入する前にデータをクリーンアップするか、データを削除するか、フォーマットを維持したい場合は、SELECT の末尾に TYPE を追加します。

SELECT * FROM MyData FOR XML PATH(''), TYPE
于 2013-05-14T15:38:06.980 に答える