如何在T-SQL中插入新行Char(13)

时间:2019-06-28 10:45:57

标签: sql-server tsql

我已应用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 个答案:

答案 0 :(得分:2)

尝试一下

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()的参数。