select *
from mytable
where (if @key=0
pkey>=0
else
pkey = @key)
@key
是传入存储过程的值,pkey
是mytable
中的列。
答案 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