我有一个表,有三列,lengthwidthheight,都integers,并且限制不大于1000000
在计算体积时,我将其转换为bigint并且它完全适合。但是,我有一个视图将卷乘以另一个值,这可能会导致
错误:bigint超出范围
对于那些实际拥有最大体积并乘以大于9的记录。
有没有办法捕捉到这种情况(例如,溢出时返回NULL,而不是抛出错误而不返回任何内容)?

最佳答案

在进行计算之前,我将值转换为numeric,这样可以避免错误。
如果需要将结果设为bigint,则可以使用如下构造:

WITH num_results AS (
   SELECT CAST(value AS numeric) * ... AS bigresult
   FROM ...
)
SELECT CASE WHEN bigresult BETWEEN -9223372036854775808 AND 9223372036854775807
            THEN CAST(bigresult AS bigint)
            ELSE NULL
       END, ...
FROM num_results;

关于postgresql - 如何在 View 中捕获“bigint超出范围”错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56562233/

10-13 00:49