You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保PostgreSQL中int8类型计算列返回对应数据类型

PostgreSQL中SUM(int8)返回字符串而非bigint的解决问题

我在MacBook上运行的PostgreSQL 14.4数据库中,给用户登录的SELECT查询添加了如下计算字段:

SUM(m.file_size) AS byte_count

media.file_size(即m.file_size)是int8类型,我原本认为byte_count会返回相同类型,但实际返回的是字符串。

我尝试了以下几种修改方式,结果都还是返回字符串:

  • SUM(m.file_size)::bigint AS byte_count
  • SUM(m.file_size)::int8 AS byte_count
  • CAST(SUM(m.file_size) AS bigint) AS byte_count

最后我试了:

SUM(m.file_size)::int AS byte_count

这次返回了数值,但存在隐患——当用户的字节总量超过int的容量时,会触发integer out of range错误。比如我在users表的max_bytes(int8类型)字段中填入223372036854775808这个极大值时,就出现了该错误。

目前我的服务器用ExpressJS编写,通过console.log可以清楚分辨服务器输出的返回值是数值还是字符串,signInUser函数里的计算列代码是:

COALESCE(SUM(m.file_size)::int, 0) AS byte_count

另外media表的file_size字段也是int8类型。

请问有没有其他方法可以将这个计算字段转换为8字节的bigint类型?

内容的提问来源于stack exchange,提问作者RobertW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:31:17