0

次のようにMySQLストアドプロシージャで使用したい:

Set @pr_ans = '($x>22.5 And $x<27.5)';
Set @pr_mine = 2;

SET @v_eval = REPLACE(@pr_ans, '$x', @pr_mine);
SELECT IF(@v_eval, 'right', 'wrong');

として値を変更しても、常に「正しい」結果が得られまし@pr_mine = 25;た。

if文で式を使用するにはどうすればよいですか?

4

1 に答える 1

1

あなた@pr_ansは実際には評価されません.文字列がNULL. EXECUTEおそらく、代わりに次のようなものが必要です。代わりに以下を使用してはどうでしょうか。

mysql> SET @pr_ans = 'SELECT (? > 22.5 AND ? < 27.5) AS result';
mysql> PREPARE stmt1 FROM @pr_ans;

mysql> SET @pr_mine = 2;
mysql> EXECUTE stmt1 USING @pr_mine, @pr_mine;

+--------+
| result |
+--------+
| 0      |
+--------+

mysql> SET @pr_mine = 25;
mysql> EXECUTE stmt1 USING @pr_mine, @pr_mine;

+--------+
| result |
+--------+
| 1      |
+--------+

mysql> DEALLOCATE PREPARE stmt1;

0どちらがあなたにor 1for false/を与えるでしょうtrue

選択した場合は引き続き使用できREPLACEますが、準備済みステートメントを使用する方がよいでしょう。

于 2013-07-19T14:48:03.107 に答える