我想在 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
实际上并没有被评估,你只是得到一个真实的响应,因为字符串 is not 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
for false
/ true
。
如果您愿意,您可以继续使用REPLACE
,但最好使用准备好的语句。