有什么方法可以从 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/