带有字符串表达式的mysql if语句

时间:2013-07-19 14:34:09

标签: mysql if-statement

我想在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语句中使用表达式?

1 个答案:

答案 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会给你falsetrue

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