我有一个查询在哪里,我需要找到一个数字的exp
。在某些情况下,exp
太大会返回溢出错误,或者在某些情况下,函数exp
的参数太大。在这些情况下,我需要返回一些任意值。
示例(不起作用)
select LEAST(exp(1000), 1::double precision);
在这里,我试图找到exp(1000)
。如果它太大了,我会返回1.
我怎样才能在Postgres中做到这一点?
答案 0 :(得分:0)
这样的事情:
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()
呼叫慢。