这个问题类似于我发现的几个问题,其中换行或回车导致将SQL网格结果复制到Excel时出现行拆分问题,并且您的结果将被截断并从下一行开始。
Name Order# Date PartDescription Store Phone#
---- ------- ------ ---------------- ----- -----------
Tom's 3181 10/7/2017 SB4356 Artwork... Downtown 208.452.6354
会看起来像这个
Name Order# Date PartDescription Store Phone#
---- ------- ------ ---------------- ----- -----------
Tom's 3181 10/7/2017 SB4356 Artwork... Downt
own 2080.452.6354
但是,当我将SQL网格结果复制到Excel时,不会出现此问题。当我将SQL作为动态SQL运行并通过CSV将结果通过电子邮件发送给自己时,就会出现这个问题。我不确定这里的区别是什么。问题可以隔离到"零件描述"字段,它通常是100多个用户输入的字符。如果我去掉那个字段,就不会发生这种情况。
我试过做:
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE( PartDescription, CHAR(13), ''), CHAR(10), ' '), CHAR(9), ' '), ',', ' ')))
并在较小的步骤中尝试,但没有任何效果。就像我说的,它可以将结果复制到Excel中。只是当我通过电子邮件发送给CSV时没有。我真的不知道如何隔离哪些不可见的特征可能会导致这种情况(如果是这样的话)。
我以前使用过这种方法来修复其他自动报告。这家伙太固执了。SQL在SQL Server代理中动态运行,然后以csv格式通过电子邮件发送结果。我还尝试将SQL保存在视图中,并在动态SQL中调用该视图只是为了好玩,没有任何更改。
也有同样的问题,当它达到255个字符时,结果是换行。我想如果你的PartDescription字段有很多字符,你可能会遇到同样的问题。假设您使用的是sp_send_dbmail
,如果添加选项:
@query_result_width=500
或者无论你需要什么宽度,它都应该修复它。