sql - Postgres : integer out of range. 为什么会出现这个错误?

标签 sql postgresql type-conversion

我有两个问题。我希望两者都插入相同的值:429496729600,但其中一个因错误而失败:

db=> update order_detail set amount = 400*1024*1024*1024 where id = 11;
ERROR:  integer out of range
db=> update order_detail set amount = 429496729600 where id = 11;
UPDATE 1

为什么第一次查询会出错?

UPD
忘记指定 amount 的类型是 bigint

400*1024*1024*1024 == 429496729600  

最佳答案

要强制乘法输出 bigint 而不是 int,您可以将 1 转换为 bigint 并乘法

select cast(1 as bigint)*400*1024*1024*1024;
   ?column?
--------------
 429496729600

关于sql - Postgres : integer out of range. 为什么会出现这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238781/

相关文章:

mysql - 使用 3 个不同的表外键和主键更新设置表

database - PostgreSQL 的可扩展性

c# - Int to Decimal Conversion - 在指定位置插入小数点

MySQL 将行转为动态数量的列

SQLzoo 更多 JOIN 练习 #16

java - Hibernate postgresql 通知功能

postgresql - 查看 PostgreSQL-9.5 中定义的行级安全策略

c++ - Long Long 数据类型的 Cuda 算术除法错误

c# - 将二维数组转换为列表(一维)的快速方法

mysql - 在具有联接表的查询中,如何设置仅影响一行而不影响联接创建的所有行的 where 子句