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 .
. Я не понимаю, откуда приходит .
. Я попытался сделать SELECT SelectedComments FROM #StudentDetails
прямо перед этим, и я не вижу .
. Кто-нибудь может сказать, откуда он может?
Ответы
Ответ 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