当前位置:  开发笔记 > 前端 > 正文

sql搜索查询多个可选参数

如何解决《sql搜索查询多个可选参数》经验,为你挑选了2个好方法。

我正在尝试在我的文档存档系统上为高级搜索页面编写查询.我正在尝试通过多个可选参数进行搜索.我有大约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)

...



1> edosoft..:

您可以像这样使用COALESCE(或ISNULL):

WHERE COALESCE(@var1, col1) = col1 
AND COALESCE(@var2, col2) = col2 
AND COALESCE(@var3, col3) = col3


如果列值为NULL,则此解决方案将无效,因为您无法以这种方式测试NULL.如果值为NULL,则将过滤掉该行.这不是你想要的.

2> clyc..:

我经常这样做:P

WHERE (@var1 IS NULL OR col1 = @var1)
AND (@var2 IS NULL OR col2 = @var2)

...

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有