4

我有一个 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)

4

1 回答 1

3

只需使用:

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

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

于 2012-12-05T19:17:44.043 回答