mysql/oracle 存储数学公式

标签 mysql sql oracle

有什么方法可以从 Oracle 和/或 MySQL 中存储的字符串应用数学公式吗?

col1 | col2 | formula
---------------------
 2   |  2   | col1*col2
 2   |  3   | col1+col2 

SELECT * from tbl

result:
col1 | col2 | formula
---------------------
 2   |  2   |   4
 2   |  3   |   5

编辑:每行一个公式

最佳答案

我认为您的意思是您想让数据库解析公式字符串。例如,对于 Oracle,您可以

  • 在表中添加一列以包含结果
  • 运行更新语句,该语句将使用表中列的值和公式文本调用 PL/SQL 函数

    更新 {table} set formula_result = fn_calc_result (col1, col2, formula_column);

PL/SQL 函数将通过用这些列的实际值替换“col1”和“col2”等来创建一个字符串。你可以用正则表达式来做到这一点,只要公式是一致的。

然后使用

execute immediate 'select '||{formula}||' from dual' into v_return;
return v_return;

计算结果并返回。

当然,您也可以编写自己的解析器。如果您决定采用这种方式,请不要忘记处理运算优先级、括号等。

关于mysql/oracle 存储数学公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210865/

相关文章:

java - 保存首先创建的行

c++ - 使用准备语句后 SELECT LAST_INSERT_ID() 返回 0

SQL 尝试在存储过程中使用 DATEADD

php - 可怕的 'keep me logged in' 和 session 检查

php - SQL 查询 - 在一个结果行中显示连接结果

mysql - 我需要查询将表中的每个项目与其他所有项目配对,但仅一次

java - 仅在 Linux WebLogic 上抛出 DuplicateKeyException

java - 在jsp中显示来自数据库的数据 - MVC

mysql - 无需输入 mysql 命令行即可收集 mysql 查询结果

mysql - 显示相关记录 vb.net mysql