将带换行符的SQL查询输出粘贴到单个Excel单元格中

将带换行符的SQL查询输出粘贴到单个Excel单元格中,sql,excel,sql-server-2008,Sql,Excel,Sql Server 2008,我试图编写SQL代码,从多个字段中提取数据并在单个字段中显示,但显示在多行中。目标是输出到Excel,在单个单元格中保留多行。我们当前的过程只是使用Excel将两个字段连接到一个带有回车符的单元格中,但如果可能的话,我希望SQL能够这样做 例如: DECLARE @text NVARCHAR(100) SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.' print @text 显示以下内容: This is line 1.

我试图编写SQL代码,从多个字段中提取数据并在单个字段中显示,但显示在多行中。目标是输出到Excel,在单个单元格中保留多行。我们当前的过程只是使用Excel将两个字段连接到一个带有回车符的单元格中,但如果可能的话,我希望SQL能够这样做

例如:

DECLARE @text NVARCHAR(100)
SET @text = 'This is line 1.' + CHAR(13)  + 'This is line 2.'
print @text
显示以下内容:

This is line 1. This is line 2. This is line 1. This is line 2. 显示以下内容:

This is line 1. This is line 2. This is line 1. This is line 2. 这是一号线。这是2号线。 然后,我想将该输出复制并粘贴到Excel中,并将数据显示在单个单元格中,以便将其全部显示在一个单元格中:

This is line 1. This is line 2. 这是一号线。
这是第2行。在SQL查询中,不要使用回车,而是使用:

   " & CHAR(10) & "
让列以等号和双引号开始,以双引号结束。因此,SQL的输出将是:

="This is line 1." & CHAR(10) & "This is line 2."

把这个输入Excel。这看起来会很混乱,除非您确保在“格式单元格”下选中“换行文本”,否则回车符将显示在单元格内。

您在第一个代码段中看到换行符,因为您正在查看Management Studio中的“消息”窗口。该代码没有结果。您在第二段中看到的是ManagementStudio如何显示结果。将其视为数据的调试视图。ManagementStudio不是一个报告工具。
char(13)
value将出现在原始数据中;它只是没有在这个视图中显示给您

然而,仍然存在三个问题

第一个问题是如何将数据导入Excel。如果这是一个VBA宏或通过库直接创建Excel本机文件,您可能就没事了。其他选项都有问题:

  • 如果复制/粘贴,则是从不存在换行符的调试视图进行复制
  • 如果您正在运行一个创建CSV文件或类似文件的程序,那么您依赖于Excel的CSV解析器,它不太可能很好地处理换行
  • 如果您在ManagementStudio中使用“结果到文本”或“结果到文件”功能,字符就在那里,但您也在处理Excel无法自动处理的一些额外的页眉和页脚文本(尽管您可以将其用作复制/粘贴源)
对于第二个问题,即使在某些情况下,您有
char(13)
,这在Windows系统上也只是半个换行符。您还需要一个额外的
CHAR(10)
,以便在某些情况下显示它,例如:

SET @text = 'This is line 1.' + char(13) + CHAR(10) + 'This is line 2.'

最后一个问题是,Excel是否会在实现盈亏平衡时兑现这一承诺。Excel单元格不喜欢换行符。它希望您将此类数据放在新行中。打开一个新的空白工作表,让我知道您在同一单元格中手动键入两行文本的成功程度。您可能需要明确告诉Excel包装文本,或更改默认视图。

感谢Joel的详细解释。我使用的第三方应用程序有一个报表生成器,但非常有限,因此大多数时候我直接用SQL构建和运行报表,然后将结果复制/粘贴到Excel中,发送给其他员工,以便与他们进行更多的合作。我现在刚开始和SSR合作,也在做一些预格式化的工作。