![](/img/trans.png)
[英]Firebird 2.5 VS Interbase 9/XE - which performing faster?
[英]Count in Firebird 3.0 bigint vs Firebird 2.5 integer
在我的系统上,从 Firebird 2.5 迁移到 3.0 后,许多报告和其他函数开始出现问题,指出预期的是 Integer 而当前的是LargeInt
。 我看了一下,在 3.0 中使用计数的一些搜索返回一个bigInt
列,而在 2.5 中它返回一个整数列。
为了解决我所知道的方式,我必须对所有出现错误、经过测试和工作的东西进行强制转换,但它是一个大系统,它将提供大量工作。
有谁知道在 Firebird 本身中有什么方法可以解决这个问题? 一些配置,还是什么?
没有它的配置; Firebird 3 发行说明只说:
COUNT()
聚合器现在将其结果返回为BIGINT
而不是INTEGER
。
您需要在查询或代码中显式应用强制转换,或者查看您的数据访问库是否可以显式请求整数,而不仅仅是动态类型。 例如,在 Java 世界中,JDBC API 有一个显式的getInt
,只要该值适合 32 位整数, getInt
可以用于BIGINT
。
我使用 Unidac,对于解决方案,我使用了 Map Rules(数据类型映射)。
在任何 delphi 组件中使用 SQL 中的 TYPECAST 就可以了。 例如白:
select cast(count(*) as integer) BR from ...
代替
select count(*) BR from ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.