Подтвердить что ты не робот

SQL 'stuff' и 'FOR XML PATH' генерируют странные символы

У меня есть следующий запрос внутри более крупного оператора Select в SQL Server:

 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. Кто-нибудь может сказать, откуда он может?

4b9b3361

Ответ 1

Если вы измените использование параметра "Для Xml-пути", он будет выполнять отмену для вас, и вам не нужно использовать функцию "Заменить":

,   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

Ответ 2

& # x0D - возврат каретки. Вы можете либо очистить данные перед их вставкой, либо удалить, либо, если вы хотите сохранить форматирование, добавьте TYPE в конец вашего SELECT:

SELECT * FROM MyData FOR XML PATH(''), TYPE