我有一个查询,我需要找到exp
一个数字。在某些情况下,exp
返回溢出错误的函数太大,或者在某些情况下,函数的参数exp
太大。在这些情况下,我需要返回一些任意值。
示例(不起作用)
select LEAST(exp(1000), 1::double precision);
在这里,我试图找到exp(1000)
. 如果它太大,我返回 1。
我怎样才能在 Postgres 中做到这一点?
我有一个查询,我需要找到exp
一个数字。在某些情况下,exp
返回溢出错误的函数太大,或者在某些情况下,函数的参数exp
太大。在这些情况下,我需要返回一些任意值。
示例(不起作用)
select LEAST(exp(1000), 1::double precision);
在这里,我试图找到exp(1000)
. 如果它太大,我返回 1。
我怎样才能在 Postgres 中做到这一点?
像这样的东西:
create or replace function safe_exp(val double precision)
returns double precision
language plpgsql
as
$body$
declare
result double precision;
begin
begin
result := exp(val);
exception
when others then
result := 1.0;
end;
return result;
end;
$body$
但是由于异常块,这将比“常规”exp()
调用慢。