Ответ 1
Это небольшое изменение заставит уродливые объекты уйти, но они не будут устранять возврат каретки (посмотрите на результаты в результатах "Результаты", а не "Результаты в сетку", чтобы увидеть их):
SELECT Params = ( SELECT DesCol + ' = ''' + SoCol + ''''
FROM dbo.Map_Data t1
WHERE ID = 125
FOR
XML PATH(''), TYPE
).value('.[1]', 'nvarchar(max)');
Если вы хотите избавиться от CR/LF, вы можете сказать:
SELECT Params = ( SELECT REPLACE(REPLACE(DesCol + ' = ''' + SoCol + '''',
CHAR(13), ''), CHAR(10), '')
FROM dbo.Map_Data t1
WHERE ID = 125
FOR
XML PATH(''), TYPE
).value('.[1]', 'nvarchar(max)');
Также я не уверен, как вы собираетесь использовать вывод, но если вы собираетесь позже его оценить с помощью динамического SQL, вам понадобится заменить встроенные одинарные кавычки ('
) двумя одинарные кавычки (''
). В противном случае он взорвется, потому что они также являются строковыми разделителями.