项目的开发过程中,经常会碰到根据公式计算某值的场景,例如:
指标A:公式为((a+b)/c-d)*100%
指标B:公式为(a-b/c)*100%
指标C:公式为(a-c)*b-1
其中a、b、c、d为业务数据
通常这种情况,如果放到java或者js中进行计算的话,方法或者函数的传入参数必然是包括公式和因子
方法体中不可避免的要进行公式的解析和因子的代入替换,这是一项非常复杂的工作
其实,我们完全可以根据数据库SQL的特性来进行处理
如下图:
指标 | A | B | C | D | 公式 | 结果 |
指标A | 10 | 43 | 21 | 55 | ((a+b)/c-d)*100% | |
指标B | 26 | 23 | 33 | 27 | (a-b/c)*100% | |
指标C | 17 | 19 | 35 | 22 | (a-c)*b-1 |
将ABCD等因子的值插入到表中,公式也插入到表中
计算结果:SELECT ((a+b)/c-d)*100% FROM 表X WHERE 指标=指标A
这样,可以将公式的计算交给数据库的后台进行,而避过公式解析和代入的复杂过程