日期:2014-05-17  浏览次数:20519 次

sql 参数组合条件查询,条件为空不考虑
sql 参数组合条件查询,条件为空不考虑

如:

select a,b,c from t0 
inner join (
 select 
t1.Model
from  t1 
where  条件
) t80 on t80.Model=t0.Model

where 条件 

现在是想传入参数, @a ,@b ,@c  当他们不为空时才作为条件。
比如:如果@a='' 那么 就不用把a=@a考虑进来。这时 where b=@b,c=@c;


------最佳解决方案--------------------
改成过程拼接最好。。

否则

a=case when isnull(@a,'')='' then a else @a end 也可以但

会用不到索引。
------其他解决方案--------------------
引用:
或者这样
我想传一个参数@sql 

select a, b,c frm tb where @sql

当然,如果直接执行这句话好像是有语法错误的。
那应该怎么处理好

用动态SQL的方法,

declare @tsql varchar(max)
select @tsql='select a, b,c from tb where '+@sql  -->@sql是传入参数
exec(@tsql)

------其他解决方案--------------------
引用:
改成过程拼接最好。。

否则

a=case when isnull(@a,'')='' then a else @a end 也可以但

会用不到索引。


a=case when isnull(@a,'')='' then a else @a end
这句话是什么意思
------其他解决方案--------------------
能详细点吗,本人新手。
------其他解决方案--------------------
或者这样
我想传一个参数@sql 

select a, b,c frm tb where @sql

当然,如果直接执行这句话好像是有语法错误的。
那应该怎么处理好
------其他解决方案--------------------
ok已经解决,方法如5楼的。