如何在此sql语句的where子句中使用if语句?

时间:2013-02-05 17:54:18

标签: sql sql-server stored-procedures

 select * 
 from mytable
 where (if @key=0 
           pkey>=0
        else
           pkey = @key)

@key是传入存储过程的值,pkeymytable中的列。

3 个答案:

答案 0 :(得分:2)

这个怎么样:

 select * 
 from mytable
 where ((@key=0 AND pkey>=0) OR (@key<>0 AND pkey = @key))

答案 1 :(得分:1)

您使用CASE就像您尝试使用if 一样),如下所示。 (DEMO

select * 
from mytable
where pkey = case when @key <> 0 then @key 
                  else Abs(pkey) end

答案 2 :(得分:0)

这对你有用。通过使用case语句,您可以应用动态过滤器..

select *   
from mytable  
where  1 = case 
             when @key=0 then case when pkey>=0 then 1 else 0 end
             else case when pkey = @key then 1 else 0 end
           end