我想评估Postgres中的纯计算字符串。
例如:eval('234 + 65 * 3')
该函数不是常量,因此也可以只是2 + 2
期待SELECT eval('2 + 2') AS result
我读到了有关eval()
函数的巨大安全问题,但这些问题似乎包含SELECT
语句。这里纯粹的计算要求。
答案 0 :(得分:2)
您需要PL/pgSQL
:
create or replace function f(_s text)
returns numeric as $$
declare i numeric;
begin
execute format('select %s', _s) into i;
return i;
end;
$$ language plpgsql;
select f('1 + 1');
f
---
2