0

我有一个奇怪的问题,我在网上找不到任何东西,希望这里有人能提供一些见解:

在存储过程中,我使用游标遍历表并将单个文本字段 (varchar) 的所有值整理到单个字符串变量中。我用回车/换行(字符 13 和 10)分隔每一行。

如果我将变量打印到屏幕上,CR 和 LF 字符清楚地存在,并且在消息窗口的输出中显示,正如我所期望的那样,通过将字符串格式化为单独的行。

如果我在适当位置检查字符串变量中的 ASCII 值,则会显示正确的 ASCII 值(分别为 13 和 10)

如果我将字符串插入临时表中,我还可以看到 CR 和 LF 字符已被保留(通过再次检查代码中的 ASCII 值)。

但是,如果我“选择”变量使其出现在网格中,然后复制输出并粘贴到编辑器(记事本、word、SQL 查询窗口等)中,CR 和 LF 已被替换为空格。

我认为这与正常的复制/粘贴功能没有任何关系,因为从任何其他环境复制会保留所有字符。在 SQL 查询分析器网格输出中复制单元格时,复制工具有什么特殊之处吗?

虽然这对我来说不是一个阻碍,但这确实意味着我必须跳过一些我觉得我不应该这样做的箍 - 而且,我只是好奇。

干杯,J

4

2 回答 2

0

如果我在管理工作室中运行它,然后将生成的单元格复制并粘贴到记事本中,它会正确显示:

select 'line1' + char(13) + char(10) + 'line2'

或者你可以试试这个:

select 'line1
line2'

如果这是一个 unicode 问题,您可以尝试使用 unicode crlf 等效项:

select N'line1' + nchar(0x000D) + N'line2'
于 2013-11-01T16:44:45.423 回答
0

假设您使用的是 SQL Server Management Studio,请使用“结果转文本”(Ctrl+T)。那应该保持换行符。

于 2013-11-01T16:38:23.413 回答