0

Mysql にストア プロシージャがあります。これで、クエリを実行して文字列 @str = 5*2+1 を取得し、この文字列を計算して数値を返したいと考えています。私ができるSQLサーバーのように、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 に答える