我正在使用DB2 v9DB2条件WHERE子句
我有一个带有参数的存储过程,可能会以空字符串的形式传入。这里somer伪代码为我想要做的:
WHERE myColumn.name =
IF param1 = '' THEN
**disregard this param, all column values are eligible**
ELSE
myColumn.name = param1;
基本上只是忽略参数,如果它是一个空字符串。如果不是,则将其作为WHERE子句中的过滤器应用。这在DB2中可以做到吗?
你的智慧超出了我最疯狂的梦想。谢谢! – Ted 2012-04-18 17:45:36
这个想法是,通常*查询生成器/优化器足够智能以检测“循环不变”条件。 (就像'WHERE 1 = 0 OR ...') – wildplasser 2012-04-18 17:54:24
@Ted - 请注意,虽然我做了类似的事情,但SQL并不能像大多数编程语言那样确保“短路”顺序。 wildplasser的评论(通常)是实际发生的事情,这可能会使它出现这种行为。 – 2012-04-19 16:28:47