我有我正在执行搜索操作的存储过程,该过程需要10个输入参数并返回为这些参数找到的行。如何根据存储过程中不为空/参数值生成WHERE条件?
我正在使用LIKE
搜索运算符,但我的问题是有可能只有少数参数传递值,其余可以是空白或空值。我想从查询的WHERE
条件中排除空白/空参数值,请给我建议。
在此先感谢
SP
我有我正在执行搜索操作的存储过程,该过程需要10个输入参数并返回为这些参数找到的行。如何根据存储过程中不为空/参数值生成WHERE条件?
我正在使用LIKE
搜索运算符,但我的问题是有可能只有少数参数传递值,其余可以是空白或空值。我想从查询的WHERE
条件中排除空白/空参数值,请给我建议。
在此先感谢
SP
select *
from YourTable
where (@Param1 is null or Field1 like @Param1)
and (@Param2 is null or Field2 like @Param2)
您可以使用任何条件,而不是like
select * from Table where isnull(@Field1,Field1) = Field1 and isnull(@Field2,Field2) = Field2
使用相同的技术,你可以做之前测试的空白查询的选择部分并将其转换为空之前选择(它会覆盖你的空白和空的情况下)
请显示一些代码? – paulsm4 2011-12-21 06:23:15
它是否必须使用LIKE命令?如果您使用全文搜索IMO更好地查询这样的文本。我还建议你使用来自C#的参数化查询,将比动态查询更优化 – lloydom 2011-12-21 09:01:41