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

是回车符。您可以在插入数据之前清理数据,将其删除,或者,如果您想保留格式,请将 TYPE 添加到 SELECT 的末尾:

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