我在旧的MySQL数据库中有一个运行良好的查询,其中有一个检查:

WHERE column_x + column_y > 524288000

现在我们已经迁移到Redshift,查询失败:
ERROR: Numeric data overflow (addition)
  Detail:
  -----------------------------------------------
  error:  Numeric data overflow (addition)
  code:      1058
  context:
  query:     915381
  location:  numeric.hpp:112
  process:   query4_s0_22 [pid=6421]
  ----------------------------------------------- [SQL State=XX000]

两列都是bigint类型。当运行查询而不添加列时(只检查一列或另一列),查询执行得很好。我假设有些行的column_x + column_y大于bigint的最大大小。
这里有什么解决办法?

最佳答案

WHERE column_x::numeric(20) + column_y::numeric(20) > 524288000

关于mysql - 如何避免数值数据溢出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16677823/

10-13 02:03