如何针对多个条件(包括所有条件)进行选择查询?

时间:2013-03-25 15:05:02

标签: asp.net sql sql-server

我在存储过程中有一个查询,如下所示

select empid 
from tblname 
where place = @place 
and category = @category  

我想使用相同的程序来获得place ='calicut'的所有结果(类别可以是任何结果)。通过这样做,如果选择的类别在我的query中为“全部”,我可以避免单独dropdownlist

3 个答案:

答案 0 :(得分:2)

SELECT empid 
FROM tblname 
WHERE place = @place 
AND (category = @category OR @category = 'all');

答案 1 :(得分:1)

您应该能够检查NULL - 这假设您在选择默认的“all”值时传递NULL。如果没有,请将NULL替换为传递给SP的全部或任何值:

select empid 
from tblname 
where place=@place and 
    (@category IS NULL OR category=@category)

这会检查@category参数 - 如果它为NULL,则它会选择任何类别。否则,它会搜索该特定类别。

如果您只关心place ='calicut',请改用:

select empid 
from tblname 
where place='calicut' and 
    (@category IS NULL OR category=@category)

答案 2 :(得分:1)

您可以做的另一件事是在编写@category时初始化stored procedure变量。

ALTER PROCEDURE yourProcName 
   @place VARCHAR(100), 
   @category VARCHAR(50) = ''
AS
BEGIN

  select empid 
  from tblname 
  where place = @place 
  and 
  (@category = '' OR category  = @category)

END