我在 Mysql 中有一个存储过程,在这里我做了一些查询来获取一个字符串 @str = 5*2+1 然后我想计算这个字符串并返回一个数字。就像在 sql server 中我可以做的一样exec ('select'+ @str)
,它返回 11
谢谢
我在 Mysql 中有一个存储过程,在这里我做了一些查询来获取一个字符串 @str = 5*2+1 然后我想计算这个字符串并返回一个数字。就像在 sql server 中我可以做的一样exec ('select'+ @str)
,它返回 11
谢谢
PREPARE stmt1 FROM 'SELECT 5*2+1 as eval';
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
是的,从技术上讲,您可以这样做,但这是一种危险的SQL 注入形式,因此这可能是一个非常糟糕的主意。
人们不使用eval
或类似的东西来做简单的数学是有原因的。
您可以使用以下内容,但在使用动态查询时要小心 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;