次のように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文で式を使用するにはどうすればよいですか?
次のように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文で式を使用するにはどうすればよいですか?
あなた@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 1
for false
/を与えるでしょうtrue
。
選択した場合は引き続き使用できREPLACE
ますが、準備済みステートメントを使用する方がよいでしょう。