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