我在 Postgres 中有一列 (varchar),其值如下所示
1*2
9/3
23+33
2-1
3*3
123*32
我想直接从每个单元格计算结果。一种方法是将值分开,然后进行计算。 想请问有没有什么办法可以直接计算。
最佳答案
您可以使用 plpgsql 函数来完成:
CREATE OR REPLACE FUNCTION evaluate_from_text(my_text character varying )
RETURNS text AS
$BODY$
declare
s text;
x text;
begin
s:='';
FOREACH x IN ARRAY string_to_array(my_text,' ') LOOP
execute 'SELECT ' || x into x;
s := format ('%s %s',s , x);
END LOOP;
return s;
end;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
和输出:
Select evaluate_from_text('1*2 9/3 23+33 2-1 3*3 123*32');
是:
2 3 56 1 9 3936
关于sql - 从字段sql计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207816/