我正在尝试在我的文档存档系统上为高级搜索页面编写查询.我正在尝试通过多个可选参数进行搜索.我有大约5个参数,可能是空字符串或搜索字符串.我知道我不应该检查每个字符串或空,并为每个组合创建一个单独的存储过程.
编辑:结束使用:
ISNULL(COALESCE(@var, a.col), '') = ISNULL(a.col, '')
edosoft.. 8
您可以像这样使用COALESCE(或ISNULL):
WHERE COALESCE(@var1, col1) = col1 AND COALESCE(@var2, col2) = col2 AND COALESCE(@var3, col3) = col3
如果列值为NULL,则此解决方案将无效,因为您无法以这种方式测试NULL.如果值为NULL,则将过滤掉该行.这不是你想要的. (2认同)
clyc.. 6
我经常这样做:P
WHERE (@var1 IS NULL OR col1 = @var1) AND (@var2 IS NULL OR col2 = @var2)
...
您可以像这样使用COALESCE(或ISNULL):
WHERE COALESCE(@var1, col1) = col1 AND COALESCE(@var2, col2) = col2 AND COALESCE(@var3, col3) = col3
我经常这样做:P
WHERE (@var1 IS NULL OR col1 = @var1) AND (@var2 IS NULL OR col2 = @var2)
...