如何在MySQL存储的函数中计算简单的数学公式?

如何在MySQL存储的函数中计算简单的数学公式?,mysql,math,eval,formula,stored-functions,Mysql,Math,Eval,Formula,Stored Functions,在我存储的函数中,我有: (一个简单的数学公式,仅包含数字,动态创建为字符串) 如何对此进行评估并返回结果 我不能使用EXECUTE(在存储函数中不可能),如果我将它设置为存储过程并从存储函数调用它,我会得到“存储函数或触发器中不允许使用动态SQL”-好像我会在函数中直接使用eval。 我需要一个存储函数,而不是一个过程,因为我需要在SELECT语句中调用它。我看不出使用公式能给你带来什么好处。如果要编写存储过程,请键入公式并忘记字符串 我认为让存储过程变得如此动态并不符合您的利益,因为要计算的

在我存储的函数中,我有:

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

如何对此进行评估并返回结果

我不能使用EXECUTE(在存储函数中不可能),如果我将它设置为存储过程并从存储函数调用它,我会得到“存储函数或触发器中不允许使用动态SQL”-好像我会在函数中直接使用eval。
我需要一个存储函数,而不是一个过程,因为我需要在SELECT语句中调用它。

我看不出使用公式能给你带来什么好处。如果要编写存储过程,请键入公式并忘记字符串

我认为让存储过程变得如此动态并不符合您的利益,因为要计算的公式必须在调用之间进行更改


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

显然没有解决办法。
我已经在PHP中应用了一个“paintfull”解决方案,我将不在这里显示,因为它不是问题的主题。

公式是数据库中的keps。我不能只是输入公式。。。创建解析树确实不是件小事,尤其是在MySQL函数中:)在我看来,设计很糟糕。也许你应该考虑把这些功能放在中间层,不是一个糟糕的设计,而是一个必要的设计:
formula := "(10+10 * 1000)/12";