我想在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语句中使用表达式?
答案 0 :(得分: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
/ 1
会给你false
或true
。
如果您愿意,可以继续使用REPLACE
,但最好使用准备好的声明。