例:@是否查询A bit,
@是否查询B bit
SELECT ID FROM tableName where ClassID=5我的意思是比如 @是否查询A=1 的话,那么where 后面就加入ClassID=5
查询条件,如果为0就不加入这个条件,@是否查询B也是一样根据传进的参数来返回不同的查询结果这块在存储过程中如何处理才能达到想要的效果。
@是否查询B bit
SELECT ID FROM tableName where ClassID=5我的意思是比如 @是否查询A=1 的话,那么where 后面就加入ClassID=5
查询条件,如果为0就不加入这个条件,@是否查询B也是一样根据传进的参数来返回不同的查询结果这块在存储过程中如何处理才能达到想要的效果。
if @是否查询A = 1
SELECT ID FROM tableName where ClassID=5
else
SELECT ID FROM tableName if @是否查询A = 1 and @是否查询B = ... --满足条件的写在这里
SELECT ID FROM tableName where ClassID=5
else
SELECT ID FROM tableName
from tablename
where (@a=1 and classid=5) or 1=1
declare @sql varchar(1000);
set @sql='select id from tablename where 1=1 ';
set @sql=@sql+(case when @A=1 then 'and classid=5' else '' end);
exec(@sql);
FROM tableName
where ((@是否查询A=1 and ClassID=5) or @是否查询A=@是否查询A)
and ((@是否查询B=1 and ClassID=5) or @是否查询B=@是否查询B)
上边这句是我写的,上边这句如果 @a=0的情况我可以理解成 以上条件就是where classid=5
嘛
1,采用if方式
2,采用动态拼接
3,采用where后面加条件。楼主按需取用,这些方式都是可行的。