【问题标题】:Copy data from SQL Server to Excel "NULL" instead of blank NUMBERS将数据从 SQL Server 复制到 Excel“NULL”而不是空白 NUMBERS
【发布时间】:2017-01-20 21:45:53
【问题描述】:

我从 SQL Server 结果集中复制数据并将其粘贴到 Excel 电子表格中。 NULL 值需要在 Excel 中显示为空白,但默认行为是显示单词“NULL”。对于文本字段,我可以在原始查询中应用 ISNULL([field],'') 。但是数字字段呢?我不希望它为 0,它需要为空白。有基于查询的解决方案吗?我总是忘记查找和替换。

【问题讨论】:

  • 我不知道...您可以让您的查询将您的数字转换为 varchar,使用 numberCol=isnull(convert(varchar(32),numberCol),'') 之类的东西,但这很愚蠢。
  • 默认的“行为”不在 Excel 中。这就是 SSMS 在输出中显示 NULL 的方式。并确保您可以对 Excel 中的数字列使用相同的 ISNULL 逻辑。由于 Excel 中的数据不是强类型的(实际上一切都只是一个字符串),因此它可以显示一个空字符串。对于计算,Excel 会将空字符串视为 0。
  • SqlZim,我最终使用了你的超级愚蠢的函数嵌套。很快,我就会改变整个过程。感谢您的帮助。

标签: sql-server excel null formats


【解决方案1】:

这更多是评论,但对低代表做,我会发布作为答案。默认情况下,Excel 在粘贴到工作表时不会为数字值显示空白。它将(正确地)将空白数据点解释为 0。由于您愿意查找 0 并将其替换为空值,因此这似乎是出于演示目的。如果是这种情况,我建议使用条件格式。当单元格的值 = 0 时设置使文本变为白色。如果您对该列应用任何数学,则空单元格或 0 单元格的效果是相同的,因此对公式/函数没有影响。

【讨论】:

  • 应该加上这个限制:Excel文件不能有任何公式或条件公式。它被设计为带有 .xls 后缀的制表符分隔的文本文件。文件格式不受我控制。我需要 SQL 的输出尽可能接近交付格式。另外,数据中有合法的 0,所以我不能用空白替换它们。
  • 您的查找和替换过程是根据具体情况进行的吗?有没有办法将文件保存为标准的 .xls 或 .xlsx 文件?最后,数据源必须与其他用户共享?您不能在本地存储数据源,而只能共享这些数据的视图(即数据透视表、链接表等)?
  • 哈哈哈!最佳实践???不,我刚刚获得了这个项目的所有权,现在,我必须保持原样。因此,制表符分隔的 .xls,使用空格而不是 NULL。
  • 嗯,你的情况很棘手。问题是 excel 正确地将空白单元格值转换为 0,因为该列被格式化为数字(对于整数和浮点数,NULL 为 0)。在您的情况下,最好先将该字段转换为 varchar,然后应用您的 isnull。即 isnull(cast([field] as varchar), '')
猜你喜欢
  • 2022-12-26
  • 2010-12-24
  • 2017-11-18
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多