[求助]多条件查询的SQL语句

lichxi1002 2008-09-06 11:34:17
多条件的组合查询,也可以是单条件的查询
例 A,B,C,D 可以进行,A或B或C或D的单独查询,也可以是两两组合,或三三组合或全部条件的查询,,写一个存储过程,

...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CN_SQL 2008-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lichxi1002 的回复:]
引用 1 楼 CN_SQL 的回复:
OR和AND可不一样,关键是楼主的需求是怎么样的?
意思就是如果两个条件都有,他们的关系是OR还是AND关系
如果OR则纪录可能会增加,如果是AND,纪录则会减少.

不管你如何组合,这点首先要确定.


组合之间是and的关系
[/Quote]
那可以参考2楼FC的做法,自己写写看.
水族杰纶 2008-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lichxi1002 的回复:]
引用 1 楼 CN_SQL 的回复:
OR和AND可不一样,关键是楼主的需求是怎么样的?
意思就是如果两个条件都有,他们的关系是OR还是AND关系
如果OR则纪录可能会增加,如果是AND,纪录则会减少.

不管你如何组合,这点首先要确定.


组合之间是and的关系
[/Quote]
if object_id('P_test')is not null
drop proc P_test
go
create Proc P_test
@A int,
@B char(10),
@C char(10)
as
select * from table1 where (ID=@A or @A='') and (ProductName=@B or @B='') and (GuiGe=@C or @C='')
go
exec p_test '','',''
当没有条件的就全为空,就是查询所有~~~
lichxi1002 2008-09-06
  • 打赏
  • 举报
回复
用一种最蠢的办法,就是把各种条件的组合,都列出来,用IF进行判断,但这种方法肯定不是我想要的
lichxi1002 2008-09-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 CN_SQL 的回复:]
OR和AND可不一样,关键是楼主的需求是怎么样的?
意思就是如果两个条件都有,他们的关系是OR还是AND关系
如果OR则纪录可能会增加,如果是AND,纪录则会减少.

不管你如何组合,这点首先要确定.
[/Quote]

组合之间是and的关系
水族杰纶 2008-09-06
  • 打赏
  • 举报
回复
if object_id('P_test')is not null
drop proc P_test
go
create Proc P_test
@A int,
@B char(10),
@C char(10)
as
select * from table1 where (ID=@A or @A='') and (ProductName=@B or @B='') and (GuiGe=@C or @C='')
go
fcuandy 2008-09-06
  • 打赏
  • 举报
回复
--假设传入的参数代表值

create proc p
@a varchar(10),
@b varchar(10),
@c varchar(10),
@d varchar(10)
as
begin
select * from tb where a=isnull(@a,a) and b=isnull(@b,b) and c=isnull(@c,c) and d=isnull(@d,d)
--例如当@a传入的为null,则是 where a=a and b=@b ... 当然,不一定是=号,具体的看你字段类型,及传入参数的意义来确定
end

--假设传入的参数代表列名

create proc p
@a varchar(10),
@b varchar(10),
@c varchar(10),
@d varchar(10)
as
begin
declare @s varchar(8000)
select @s='select * from tb where 1=1 '
if isnull(@a,'') !=''
set @s=@s + ' and [' + @a + ']=''xx'''
if isnull(@b,'') !=''
set @s=@s + ' and [' + @b + ']=''vvv'''
...

end


具体依你具体情况调整
CN_SQL 2008-09-06
  • 打赏
  • 举报
回复
OR和AND可不一样,关键是楼主的需求是怎么样的?
意思就是如果两个条件都有,他们的关系是OR还是AND关系
如果OR则纪录可能会增加,如果是AND,纪录则会减少.

不管你如何组合,这点首先要确定.
fzcheng 2008-09-06
  • 打赏
  • 举报
回复

CREATE PROC getQueryInfo(
@a NVARCHAR(10)=NULL,
@b NVARCHAR(10)=NULL,
@c NVARCHAR(10)=NULL,
@d NVARCHAR(10)=NULL
)
AS

BEGIN
DECLARE @strWhere NVARCHAR(100)
SET @strWhere='1=1'
IF @a IS NOT NULL
BEGIN
SET @strWhere=@strWhere +' And a=@a'
END
---
--.....
--....
EXEC ('SELECT * FROM tb WHERE'+ @strWhere)
END

参考下思路.不过还有更好的.俺菜菜

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧