Postgres - 如何将 sum(bigint) 类型转换为 bigint



我有一个Postgres 8.2表,其中的列定义为bigint数据类型。

当我sum(column)时,返回类型是numeric。我想强制类型强制将求和bigint,因为我确信结果不会超过 bigint 的最大值。我能够使用这样的子查询来实现这一点:

select T.big_col_total::bigint from (select sum(big_col) as big_col_total from big_table) T;

有没有办法在不使用子查询的情况下做到这一点,即我可以以某种方式直接类型转换sum吗?我尝试了几种方法,都会导致语法错误。

(背景:我从Hibernate运行此查询,因此将查询中的返回数据类型保留为BigInteger对我来说很重要。 bigint + bigint = numeric (Java端的BigDecimal

只需使用:

select sum(big_col)::bigint as total 
from big_table

您应该尽快升级到受支持的版本(例如 9.x)。

最新更新