如何在MySQL存储的_function_中评估一个简单的数学公式?

问题描述 投票:3回答:3

在我存储的功能中,我有:

formula := "(10+10 * 1000)/12";

(一个简单的数学公式,只有数字,动态创建为字符串)

我该如何评估并返回结果?

我无法使用EXECUTE(在存储的函数中不可能),如果我将其制成存储过程并从存储的函数中调用它,则会收到“存储的函数或触发器中不允许使用动态SQL”的提示,就像我将在函数内部直接具有eval。我需要一个存储的函数,而不是一个过程,因为我需要在SELECT语句中调用它。

mysql math eval formula stored-functions
3个回答
0
投票

我不知道使用该公式能为您带来什么。如果要编写存储过程,请键入公式,然后忘记字符串。

我认为使存储的过程动态化,而要评估的公式必须随调用而变化,这与您的利益无关。

如果需要,您必须编写一个解析器以将该字符串分解成其组成部分,创建一个解析树,然后遍历该树对其进行评估。这不是一个小问题。我会重新考虑。


0
投票

显然,对此没有解决方案。我已经在PHP中应用了“ paintfull”解决方法,由于它不是问题的主题,因此在此不再显示。


0
投票

您可以尝试此解决方案。

set @formula := 'SELECT (10+10 * 1000)/12 ';
prepare stmt from @formula;
execute stmt;

希望我对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.