如何确保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_countSUM(m.file_size)::int8 AS byte_countCAST(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
相关产品推荐
相关产品推荐

