0

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

谢谢

4

3 回答 3

1
PREPARE stmt1 FROM 'SELECT 5*2+1 as eval';
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
于 2013-04-18T02:51:54.677 回答
0

是的,从技术上讲,您可以这样做,但这是一种危险的SQL 注入形式,因此这可能是一个非常糟糕的主意。

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

于 2013-04-18T02:50:14.503 回答
0

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;
于 2013-04-18T02:52:39.207 回答