关于SQL多条件查询

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:20:16
假如我有四个条件
但是这四个条件任何一个都可能为空
也可能全部都为空
也可能全部都不为空
也可能是某一个为空
....
反正每个都可能为空

我想知道除了IF Else 之外还有没有更简便的方法
我是指代码更精简
看来你们都没有明白我的意思
janhoosan 说对了一点,就是做高级查询的
我的意思是:
这是一个在存储过程中的应用(MSSQL)
假如有一个表,有A、B、C、D四个字段
然后又有@A、@B、@C、@D四个变量
这四个变量都是从外部传入的
每个都可能为空,也都可能不为空
我的代码是:
if(@a<>'' and @b<>'' and @c<>'' and @d<>'')
begin
select * from table where a=@a and b=@b and c=@c and d=@d
end
if(@a<>'' and @b<>'' and @c<>'' and @d='')
begin
select * from table where a=@a and b=@b and c=@c
end
.....
把所有的条件都列出来
但是这样要写很多代码...特别是条件越多越麻烦
有没有更简单的方法

declare @str varchar(800)
declare @where varchar(500)
set @where=' where 1=1 '
if(@a<>'')
set @where=@where+ ' and a='+@a
if(@b<>'')
set @where=@where+ ' and b='+@b
if(@c<>'')
set @where=@where+ ' and c='+@c

set @str = 'select * from table '+@where
exec(@str)

搞定
-----------------------------
确实没明白你的意思,如果说是想用简单的方法,我写的这个可以说很简单了,如果有4个参数就写4个判断,10个参数就10个判断,比你的代码少很多,你可以试下。

应该是做高级查询那种吧, 假设key1,key2,key3,key4 为获取的关键字
string keyword,key1,key2,key3,key4;
keyword="select * from table ";
key1=(key1=="")?"":" and tiaojian1="+key1;//如果关键字不为空,就生成sql语句
key2=(key2=="")?"":" and tiaojian2="+key2;//如果关键字不为空,就生成sql语句
key3=(key3=="")?"":" and tiaojian3="+key3;//如果关键字不为空,就生成sql语句
key4=(key4==""