我有一个带有参数的报告,ItemNum
。我将它作为字符串,允许NULL值和允许空值,可用值中没有任何内容,并且为默认值选择了 null 。然后,我在WHERE
语句SELECT
where item_num IN (@ItemNum)
中有where
部分。
当我预览报告时,如果我:
,我得不到任何结果选中NULL复选框(显然Item#参数为空,它显示为灰色)或 取消选中NULL复选框,但不要在参数中添加值。
我可以获得任何结果的唯一方法是输入有效的项目编号。
我认为如果你允许空值和/或允许空值,它应该忽略该参数。也许是因为它在LIKE
条款中?
如何以我需要的方式创建此函数,即如果选中NULL复选框(或未选中并输入NO值)则忽略该参数(或换句话说,返回所有记录)?
另外 - 作为第二个问题 - 可以使用IN
与参数进行比较,还是始终必须{{1}}?
答案 0 :(得分:0)
尝试将WHERE
子句更改为:
WHERE @ItemNum is null OR item_num IN (@ItemNum)
在这种情况下,您需要明确检查NULL
。
实际上,为什么要将IN
用于单个值?它通常用于检查许多值,例如WHERE item_num IN (1, 2, 3, 5, 10)
。一个简单的=
就足够了。