【问题标题】:Count in Firebird 3.0 bigint vs Firebird 2.5 integer计数 Firebird 3.0 bigint 与 Firebird 2.5 整数
【发布时间】:2016-12-08 12:00:06
【问题描述】:

在我的系统上,从 Firebird 2.5 迁移到 3.0 后,许多报告和其他功能开始出现问题,说明预期的是整数,而当前的是 LargeInt。我看了看,有些搜索在 3.0 中返回了一个 bigInt 列,而在 2.5 中它返回了一个整数列。

为了解决我所知道的方法,我必须对所有出现错误、经过测试和工作的东西进行强制转换,但这是一个很大的系统,它会带来很多工作。

有没有人知道在 Firebird 本身中解决这个问题的任何方法?一些配置,还是什么?

【问题讨论】:

    标签: database delphi-7 firebird unidac firebird-3.0


    【解决方案1】:

    它没有配置; Firebird 3 release notes only say:

    COUNT() 聚合器现在将其结果返回为 BIGINT 而不是 INTEGER

    您需要在查询或代码中显式应用强制转换,或者查看您的数据访问库是否可以显式请求整数而不仅仅是动态类型。例如,在 Java 世界中,JDBC API 有一个显式的 getInt,只要该值适合 32 位整数,它就适用于 BIGINT

    【讨论】:

      【解决方案2】:

      我使用 Unidac,解决方案我使用 Map Rules(数据类型映射)。

      【讨论】:

        【解决方案3】:

        在任何 delphi 组件的 SQL 中使用 TYPECAST 就可以了。例如写:

        选择 cast(count(*) as integer) BR 从 ...

        而不是

        选择 计数(*) BR 从 ...

        【讨论】:

          猜你喜欢
          • 2018-12-05
          • 2013-02-05
          • 1970-01-01
          • 2014-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-22
          • 1970-01-01
          相关资源
          最近更新 更多