在 Windows 7 中从 SQL Server Management Studio 复制到 Excel 时出现奇怪的错误

在 Windows 7 中从 SQL Server Management Studio 复制到 Excel 时出现奇怪的错误

我在 SQL 管理工作室中运行查询(结果到网格),然后选择所有结果并复制标题。然后我粘贴到 Excel 中。

结果:两个特定记录在 Excel 中放在一行上。

我说两个具体的意思是,我首先获得了 26000 多条记录,然后在发现这个错误后,更改了查询以仅获取这两条记录,但仍然出现了同样的现象,而其他 26000 条记录中都没有发生这种情况。

我在 Windows 7 计算机上运行 Management Studio 2008,该计算机连接到在 Windows 2003 服务器上运行的 SQL Server 2000。我尝试复制到 Excel 2003 和 Excel 2007,两种情况下都发生了这种情况。

似乎与双引号有关。第四个字段(类型为 varchar(50))的两行(以及更多行)都有双引号,但它不是第一个或最后一个字符。两个记录中的第一个记录的第六个字段(类型为 varchar(1000))以双引号作为第一个字符。第一条记录的第四个字段正常显示。从第一条记录的第六个字段到第二条记录的第四个字段(包括)的所有字段都出现在 Excel 中的同一个单元格中。但是第一条记录第六个字段末尾的双引号和第二条记录第四个字段中的双引号被删除了。第二条记录第四个字段中双引号后的字符仍然保留在同一个单元格中。第二条记录的其余字段出现在 Excel 的连续列中。

当粘贴到记事本中时,数据确实正常显示。

我无法提供确切的数据,但它是以下形式的:

    float   varchar(50) varchar(50) varchar(50) datetime    varchar(50) varchar(1000)   varchar(50)
    1.1 text    text    text"text   2012-01-01 00:00:00.000 text    "text   text
    1.1 text    text    text"text   2012-01-01 00:00:00.000 text    text    text

以前有人遇到过这个错误吗?有问题的应用程序是什么?SQL Server Management Studio 2008、Windows 7、两个版本的 Excel、SQL Server 2000、Windows 2003?如果是 SQL Server,那么在 SQL Server 内部是否也会发生这种情况?

答案1

我知道这是一个非常老的问题,但我刚才碰巧遇到了同样的问题,这是因为“字符。我只是用替换语法在查询中删除了它,它就起作用了。PS 我也删除了所有 CR LR 数据。

(REPLACE(REPLACE(REPLACE(,CHAR(9),''),CHAR(10),''),CHAR(13),''),CHAR(34),''))

答案2

无需担心任何事情。它的解决方案很简单,不要使用 * 选择所有列,您必须写出列名...可以是所有列,但您必须在选择中提及列名,然后它肯定会起作用。我已经测试过了,它工作得很好。干杯:)

相关内容