我的查询在我们的旧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
的最大大小的行。
这里的解决方法是什么?
答案 0 :(得分:2)
WHERE column_x::numeric(20) + column_y::numeric(20) > 524288000
答案 1 :(得分:1)
倍数1 / x :)(除法会使其在0上失败):
WHERE column_x * (1/X) + column_y* (1/X) > 524288000* (1/X)
答案 2 :(得分:1)
只需将加法更改为减法:
WHERE column_x > 524288000 - column_y