使用 For XML 路径将信息连接到一个单元格中的 STUFF 命令的格式化结果

Formatting Results of STUFF command that uses For XML Path to concatenate the information into one cell

我正在使用 STUFF 命令从一列中提取数据并将它们连接到一个单元格中。

STUFF((Select CAST(v.ID as VARCHAR)+ ', '

From Source

Where CriteriaIsMet
For XML Path('')),1,0,'') as MonitorID

我想要完成的是在最后格式化结果。上面代码的结果是这样的:

 12345, 23456, 34567, 456789,

我正在寻找带有换行符的代码。我希望它们都仍然在同一个单元格中并且没有被分解但是当放置在 Excel 中时我希望得到这样的结果:

12345,
23456,
34567,
45678,

我试过使用:

 STUFF((Select REPLACE(CAST v.ID as VARCHAR) + ', ' , ', ', +CHAR(13))

但是最终结果并没有给我我想要的东西我最终得到了这个:

123456
234567&#x0D

我认为我需要在语句末尾做一些事情来实现这一点,但是,我不确定如何完成它,因为我正在使用:

For XML Path('')),1,0,'') 

我希望有人能有一个简单的解决办法。如有任何帮助,我将不胜感激。请注意,我试图将数据保存在同一个单元格中。此数据拉取的最终结果进入 Excel 中的 Pivot table,我希望数字垂直显示而不是水平显示。当水平显示时,数字会在超过单元格长度后被截断。

试试这个...

SELECT STUFF((Select  CAST(v.ID as VARCHAR(30)) +  + ', '+ CHAR(10)
       From Source
       Where CriteriaIsMet
       For XML Path(''),TYPE)
      .value('.','NVARCHAR(MAX)'),1,0,'') as MonitorID

而不是添加 CHAR(13) and/or CHAR(10)CHAR(9) 水平 TAB 对我有用。完整的 STUFF 参数和其他可能的大文本字段也应转换为 varchar(255).

应该是这样的:SELECT CAST(STUFF((...) + CHAR(9) as varchar(255)) as MonitorID