【发布时间】:2021-01-10 13:32:03
【问题描述】:
我在下面的where 子句(最后一行)中遇到了问题:
create procedure getSubjects(IN excludeName VARCHAR(255))
begin
select *
from subject
where excludeName = '' or subject.name not rlike excludeName;
end
存储过程没有报错,但是每次调用过程不带空参数都会得到ERROR 1139 (42000) at line 1: Got error 'empty (sub)expression' from regexp。
我该如何写这个子句?
注意:
我使用以下语法得到相同的错误:
create procedure getSubjects(IN excludeName VARCHAR(255))
begin
select *
from subject
where
case excludeName
when '' then
subject.name rlike '.*'
else
subject.name not rlike excludeName
end;
end
【问题讨论】:
-
恢复条件:
if(includeName != '', includeName, '.*')。 Else 部分将应用于空字符串(条件为假)和 NULL(条件为 NULL,被视为假)。与第二个条件相同。
标签: mysql stored-procedures conditional-statements where-clause