Sql server 如何在T-SQL中插入新行字符(13)

Sql server 如何在T-SQL中插入新行字符(13),sql-server,tsql,Sql Server,Tsql,我已经应用了XML路径和东西来在单个单元格中显示多个记录,这一切都很好,但我需要在单独的单行中显示单元格中的每个记录,即char(13),但在我的解决方案中,我得到的结果如下 #x0D;; Canvey
; government
; More information needed
; More information required 剧本 SELECT ans.Id ,ans.ResponseId ,STUFF((SEL

我已经应用了XML路径和东西来在单个单元格中显示多个记录,这一切都很好,但我需要在单独的单行中显示单元格中的每个记录,即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 
试试这个

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;
为了使用
.value()
方法,必须使用
TYPE
获取本机类型的XML。这将隐式地将所有实体重新转义为它们的实际字符串值

此外,我使用
PRINT
,因为典型的网格结果不会显示换行符


提示:如果你使用
CHAR(13)+CHAR(10)
你必须添加
,1,2',)
作为
STUFF()
的参数。

注意
CHAR(10)
和/或
CHAR(13)如果直接在management studio中运行此查询,则
可能无法按预期显示。您需要将
键入
传递到
XML路径
,以获得XML键入的结果,然后调用
.value
。如果您提供了完整的MCVE,我会给您确切的代码,但由于您没有,我不会(因为验证它是否正确太麻烦)您的子查询中返回了2列,您希望得到什么?A两个值之间有一个mm,值只是连接在一起?