我正在尝试编写一个过程,该过程将返回所有行的子集或仅根据输入返回所有行。我现在正在使用一些代码(粘贴在下面)。在这段代码中,我手动设置var1
和var2
(这些最终将被传递参数)并查询给定的值。
现在,代码返回满足约束的行,userDataTypeName="currentGPA"
但是userDataText="4,"
如果这些值中的任何一个为 NULL,则代码不返回任何行。userDataText=NULL
如果值为 for而不是 none,我希望返回表中的所有行。我想也许 COALESCE 可以帮助我实现这一点,但我不确定。
关于如何做到这一点的任何想法?
BEGIN
DECLARE var1 varchar(20);
DECLARE var2 varchar(20);
SET var1 = "currentGPA";
SET var2 = "4";
SELECT udata.user_id FROM userdata udata
WHERE(
COALESCE(udata.userDataTypeName, '') =
CASE
WHEN var1 IS NULL THEN ''
ELSE var1
END
and
COALESCE(udata.userDataText, '') = COALESCE(var2, '')) LIMIT 30;
END