如何计算mysql中string的值

时间:2013-04-18 02:47:07

标签: mysql

我在Mysql中有一个存储过程,在这里我做一些查询得到一个字符串@str = 5 * 2 + 1然后我想计算这个字符串并返回一个数字。 就像在sql server中一样,我可以执行exec ('select'+ @str)并返回11

由于

3 个答案:

答案 0 :(得分:1)

PREPARE stmt1 FROM 'SELECT 5*2+1 as eval';
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

答案 1 :(得分:0)

是的,从技术上讲,你可以做到这一点,但它是SQL injection的危险形式,所以这可能是一个非常糟糕的主意。

有一个原因是人们不会使用eval或类似的东西来做简单的数学运算。

答案 2 :(得分:0)

Screenshot of command from MySQL Workbench

您可以使用以下内容,但在使用动态查询时请注意SQL注入:

prepare stmt1 from 'select 5*2+1';
execute stmt1;
deallocate prepare stmt1;

使用您的代码示例,试试这个(小心SQL注入!)

set @Calc = concat('select ', '5*2+1', ' as result');
prepare stmt1 from @Calc;
execute stmt1;
deallocate prepare stmt1;