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实际上并没有被评估,你只是得到一个真实的响应,因为字符串 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;

哪个会给你01for false/ true

如果您愿意,您可以继续使用REPLACE,但最好使用准备好的语句。

于 2013-07-19T14:48:03.107 回答