从字段ssql计算值

从字段ssql计算值,sql,postgresql,Sql,Postgresql,我在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;

我在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等。。。
2 3 56 1 9 3936