2011-12-21 26 views
1

我有我正在执行搜索操作的存储过程,该过程需要10个输入参数并返回为这些参数找到的行。如何根据存储过程中不为空/参数值生成WHERE条件?

我正在使用LIKE搜索运算符,但我的问题是有可能只有少数参数传递值,其余可以是空白或空值。我想从查询的WHERE条件中排除空白/空参数值,请给我建议。

在此先感谢

SP

+0

请显示一些代码? – paulsm4 2011-12-21 06:23:15

+0

它是否必须使用LIKE命令?如果您使用全文搜索IMO更好地查询这样的文本。我还建议你使用来自C#的参数化查询,将比动态查询更优化 – lloydom 2011-12-21 09:01:41

回答

1
select * 
from YourTable 
where (@Param1 is null or Field1 like @Param1) 
    and (@Param2 is null or Field2 like @Param2) 

您可以使用任何条件,而不是like

0

select * from Table where isnull(@Field1,Field1) = Field1 and isnull(@Field2,Field2) = Field2

使用相同的技术,你可以做之前测试的空白查询的选择部分并将其转换为空之前选择(它会覆盖你的空白和空的情况下)

相关问题