我有一个表,有三列,length
,width
和height
,都integer
s,并且限制不大于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/