要实现如图所示的功能所需的SQL存储过程有多个法。 比较常规的写法: create proc ArticleSearch @articleTitle varchar(50)=null, @userName varchar(50)=null as declare @sqlString varchar(1024) set @sqlString='' set @sqlString=@sqlString+'select ArticleTitle ,ArticleId,UserName,Users.UserId ' set @sqlString=@sqlString+'from Articles,Users ' set @sqlString=@sqlString+'where Articles.UserId=Users.UserId ' if(@articleTitle is not null and @articleTitle!='') set @sqlString=@sqlString+'and Articles.ArticleTitle like ''%'+@articleTitle+'%''' if(@userName is not null and @userName!='') set @sqlString=@sqlString+'and Users.UserName like ''%'+@userName+'%''' execute(@sqlString) go 一个特别的写法: create proc ArticleSearch @articleTitle varchar(50)=null, @userName varchar(50)=null as select ArticleTitle ,ArticleId,UserName,Users.UserId from Articles,Users where Articles.UserId=Users.UserId and 1=case when @articleTitle is null or @articleTitle='' then 1 else (case when Articles.ArticleTitle like '%'+@articleTitle+'%' then 1 else 0 end) end and 1=case when @userName is null or @userName='' then 1 else (case when Users.UserName like '%'+@userName+'%' then 1 else 0 end) end go