Как вставить новую строку Char (13) в T-SQL - PullRequest
1 голос
/ 28 июня 2019

Я применил XML PATH и Stuff для отображения нескольких записей в одной ячейке, и все это работает нормально, но я обязан отображать каждую запись в ячейке в отдельной строке, то есть char (13), но в моем решении я получаю результаткак

   #x0D;; Canvey
; government
; More information needed
; More information required

Сценарий

 SELECT 
  ans.Id 
 ,ans.ResponseId
,STUFF((SELECT DISTINCT
 char(13)+char(10) +
 '; ' + cod.Name
 ,' ' + COUNT(cod.Name)
FROM [dbo].[Highlights] as h
INNER JOIN [dbo].[CodedHighlights] as ch on h.Id = ch.HighlightId
INNER JOIN [dbo].[Codes] as cod on ch.CodeId = cod.Id
WHERE h.AnswerId = ans.Id
GROUP BY cod.Name
FOR XML PATH('')), 1, 1, '' ) [ANSWER/CODES]
FROM [dbo].[Answers] as ans 

1 Ответ

2 голосов
/ 28 июня 2019

Попробуйте это

DECLARE @result VARCHAR(100)=
STUFF(
    (
        SELECT TOP 5 CHAR(13) + [name]
        FROM sys.objects 
        FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'');

PRINT @result;

Вы должны использовать TYPE, чтобы получить нативно типизированный XML, чтобы использовать метод .value().Это неявно приведет к повторному экранированию всех сущностей к их действительным строковым значениям.

Кроме того, я использую PRINT, так как типичный результат сетки не будет отображать разрывы строк.

Подсказка: если выиспользуйте CHAR(13)+CHAR(10), вам нужно добавить ,1,2,'') в качестве параметров STUFF().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...