【问题标题】:Issue with SQL data type causing SSRS report to add extra spaces导致 SSRS 报告添加额外空格的 SQL 数据类型问题
【发布时间】:2019-11-13 02:30:54
【问题描述】:

最初的问题是报告截断了一些文本。我调查并确定这是正在使用的视图的结果。该字段使用 CHAR(30),它将在 30 个字符后截断文本。

我决定将其更改为 VARCHAR(256),以确保它有足够的空间。视图中的数据看起来很棒,但是当我在 SSRS 中运行报告时,它看起来像是三倍行距:报告中的数据以类似列表的格式组织。列表之间的空间非常大。它使报告的页数增加了一倍。我恢复为 VARCHAR(64),但仍有一些超过 64 个字符的字符串文本。

我检查了 RDL 中字段的属性。它设置为“增加高度”,我认为这可以解决格式问题。

似乎没有很多空白导致问题。坦率地说,我不确定为什么它被设置为 CHAR(30) 使用 CONVERT 开头 - 它是一个文本字段,所以我认为不需要转换它,因为它显示为文本(字符串) .

您怀疑问题是什么?烦人的是我最初的更改在测试环境中运行良好,但是一旦投入生产,它就创建了三倍间距。

感谢您的帮助!

【问题讨论】:

  • 在我看来,您的数据中可能包含回车符 [CHAR(10)] 和/或换行符 [CHAR(13)] 字符。要检查是否这样做,请从 SQL Server 复制文本并将其粘贴到记事本以外的文本编辑器(Word 也可以)并显示非打印字符。

标签: sql sql-server reporting-services ssrs-2016


【解决方案1】:

您确定要使用 CHAR(30)。当您使用 CHAR 数据类型时,您将返回指定的字符数。即使字符串有 5 个字符,你也会得到 30 个。这可能会导致换行。

【讨论】:

  • 有趣。实际上,我以前从未使用过 CHAR。 VARCHAR 也会发生这种情况吗?
  • 没有。但它也确实发生在 NCHAR 上。
  • @DPool34: char(x)/nchar(x) = 正好包含 x 个字符的字符串; varchar(x)/nvarchar(x) = 最多包含 x 个字符的字符串
【解决方案2】:

在创建视图时尝试使用rtrim() 函数。

【讨论】:

  • 如果在上面的 sql 2016 上你也有 trim() 作为函数。最后。是的,在服务器端比 SSRS 端处理修剪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多