【发布时间】:2017-05-29 06:58:11
【问题描述】:
MySql中有一个存储过程sp_select_from_persons。这个过程中有3个参数。 age, class, group。这些参数值可以是 -1 或其他值。这些参数将在where 子句中使用。
现在我想写这样的 where 子句,如果这些参数的任何值不是 -1 则将它们附加到 where 子句中。例如:
如果 age = -1, class= 7 和 group = 5 那么选择查询将是:
SELECT * FROM persons p WHERE p.class = class AND p.group = group;
或者如果年龄 = 25, class= -1 并且组 = -1 那么:
SELECT * FROM persons p WHERE p.age = 25;
等等
我不想使用如下嵌入的 IF 语句:
IF age > 0 THEN
IF class > 0 THEN
IF group > 0 THEN
SELECT * FROM persons p WHERE p.age = age AND p.class = class AND p.group = group;
END IF
ELSE ....... etc
有没有更好的方法来做到这一点?
【问题讨论】: