从字段sql计算值

时间:2014-03-05 19:52:42

标签: sql postgresql

我在Postgres中有一个列(varchar),值看起来像这样

1*2
9/3
23+33
2-1
3*3
123*32

我想直接计算每个细胞的结果。一种方法是分离值然后进行计算。 我想问一下是否有办法直接进行计算。

1 个答案:

答案 0 :(得分:0)

您可以使用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