34,588
社区成员
发帖
与我相关
我的任务
分享
if @bm=-1 and @zc=-1
select xm,bm,zc,rzsj
from employee
else if @bm=-1
select xm,bm,zc,rzsj
from employee
where zc=@zc
else if @zc=-1
select xm,bm,zc,rzsj
from employee
where bm=@bm
else
select xm,bm,zc,rzsj
from employee
where bm=@bm and zc=@zc
--或者最简单的方式
select xm,bm,zc,rzsj from employee where zc=isnull(nullif(@zc,-1),zc) and bm=isnull(nullif(@bm,-1),bm)
declare @sql varchar(1000)
set @sql='select xm,bm,zc,rzsj from employee where 1=1'
if(@zc!=-1)
set @sql=@sql+' and zc='''+@zc+''''
if(@bm!=-1)
set @sql=@sql+' and bm='''+@bm+''''
exec(@sql)
select xm,bm,zc,rzsj
from employee
where (@bm=-1 and @zc=-1) or
(@bm=-1 and @zc<>-1 and zc=@zc) or
(@bm<>-1 and @zc=-1 and bm=@bm) or
( @bm<>-1 and @zc<>-1 and bm=@bm and zc=@zc)
select xm,bm,zc,rzsj
from employee
where
case when @bm = -1 and @zc = -1 then zc=zc and bm=bm end
and case when @zc = -1 and @bm <> -1 then bm=@bm
and case when @bm = -1 and @zc <> -1 then zc=@zc
else then bm=@bm and zc=@zc end
select xm,bm,zc,rzsj
from employee
where (bm=@bm or @bm=-1)
and (zc=@zc or @zc=-1)