sql - 从字段sql计算值

标签 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;
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/

相关文章:

mysql - 一起使用 OUTER JOIN AND OR 运算符

sql - 删除大量数据后测量数据库可用空间

sql - 使用 LIKE 查找 'exact' 匹配项

postgresql - Spring Boot JPA 数据库选择

sql - 寻找CTE中的无限递归循环

sql - Oracle 是否有内置函数可以按特定顺序连接多个字段?

ruby-on-rails - 如何在 ActiveRecord 中从使用一个外键迁移到另一个外键?

ruby-on-rails - Heroku 上的 ActiveRecord PGError 不是本地的

postgresql - Postgres 9.1.24 > fatal error : SSL is not supported by this build

sql - 如何在 PostgreSQL 中使用单个查询更新两列