我已应用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
答案 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()
的参数。