Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何抓住';bigint超出范围';视图中的错误?_Postgresql_Outofrangeexception - Fatal编程技术网

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吗?