Postgresql 如何抓住';bigint超出范围';视图中的错误?
我有一个表,有三列,Postgresql 如何抓住';bigint超出范围';视图中的错误?,postgresql,outofrangeexception,Postgresql,Outofrangeexception,我有一个表,有三列,长度,宽度和高度,所有的整数s和不大于1000000的约束 在计算体积时,我将其转换为bigint,这一切都适用。但是,我有一个视图,它将体积乘以另一个值,这可能会导致 错误:bigint超出范围 对于那些实际具有最大容量并乘以大于9的任何值的记录 是否有一种方法可以捕获该值(例如,溢出时返回NULL),而不是带着错误退出而不返回任何内容?在进行计算之前,我会将该值转换为numeric,这样可以避免错误 如果需要将结果作为bigint,可以使用如下构造: WITH num_r
长度
,宽度
和高度
,所有的整数
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;
可以用数字代替bigint吗?