SqlServer 多条件查询 [存储过程] 经典例子

------------表中的字段---------------
CREATE TABLE [dbo].[stuInfo] (
[FNumber] [int] IDENTITY(1,1) NOT NULL ,
[FName] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FNameen] [varchar] (35) COLLATE Chinese_PRC_CI_AS  ,
[FSex] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FEducation] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FCardID] [char] (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FBirDate] [datetime] NOT NULL ,
[FTech] [nvarchar](50) COLLATE Chinese_PRC_CI_AS ,
[FSubject] [nvarchar](50) COLLATE Chinese_PRC_CI_AS,
[FJiF] [nvarchar](100)COLLATE Chinese_PRC_CI_AS,
[FJobAdd][nvarchar](100)COLLATE Chinese_PRC_CI_AS,
[FExamNum][varchar](30)COLLATE Chinese_PRC_CI_AS NOT NULL,
[FServerNum] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FExamDate] [datetime] NOT NULL ,
[FIsAE] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
----------存储过程-------------------------
IF EXISTS(SELECT *FROM SYSOBJECTS WHERE NAME='PROC_Look')
DROP PROC  PROC_Look
GO
CREATE PROC PROC_Look

@FName  NVARCHAR(30)=NULL,
@FNameen VARCHAR(35)=NULL,
@FCardID CHAR(18)=NULL,
@FExamNum NVARCHAR(30)=NULL,
@FServerNum NVARCHAR(30)=NULL,
@FSex  CHAR(1)=NULL,
@FEducation CHAR(1)=NULL,
@FIsAE  CHAR(1)=NULL,
@FTech  NVARCHAR(50)=NULL,
@FSubject NVARCHAR(50)=NULL,
@FJiF  NVARCHAR(100)=NULL,
@FJobAdd NVARCHAR(100)=NULL,
@FStartTime DATETIME=NULL,
@FEndTime DATETIME=NULL

 
AS
declare @sqlStr varchar(100)
       
if @FName IS NOT NULL
begin
  set @sqlStr=' where FName='+''''+@FName+''''
end
       
if @FNameen IS NOT NULL
begin
    if @sqlStr IS NOT NULL
        set @sqlStr=@sqlStr+' and FNameen='+''''+@FNameen+''''
    else
  set @sqlStr=' where FNameen='+''''+@FNameen+''''
end
   
if @FCardID IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FCardID='+''''+@FCardID+''''
  else
  set @sqlStr=' where FCardID='+''''+@FCardID+''''
end

if @FExamNum IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FExamNum='+''''+@FExamNum+''''
  else
  set @sqlStr=' where FExamNum='+''''+@FExamNum +''''
end

if @FServerNum IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FServerNum='+''''+@FServerNum+''''
  else
  set @sqlStr=' where FServerNum='+''''+@FServerNum+''''
end

if @FSex IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FSex='+''''+@FSex+''''
  else
  set @sqlStr=' where FSex='+''''+@FSex+''''
end

if @FEducation IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FEducation='+''''+@FEducation+''''
                       
                       
  else
  set @sqlStr=' where FEducation='+''''+@FEducation+''''
 
end
if @FIsAE IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FIsAE='+''''+@FIsAE+''''
                       
  else
  set @sqlStr=' where FIsAE='+''''+@FIsAE+''''
                       
end
if @FTech IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FTech='+''''+@FTech+''''
  else
  set @sqlStr=' where FTech='+''''+@FTech+''''
end

if @FSubject IS NOT NULL
  begin
  if @sqlStr IS NOT NULL
    set @sqlStr=@sqlStr+' and FSubject='+''''+@FSubject+''''
  else
    set @sqlStr=' where FSubject='+''''+@FSubject +''''
  end
if @FJiF IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FJiF='+''''+@FJiF+''''
  else
  set @sqlStr=' where FJiF='+''''+@FJiF+''''
end
if @FJobAdd IS NOT NULL
begin
  if @sqlStr IS NOT NULL
  set @sqlStr=@sqlStr+' and FJobAdd='+''''+@FJobAdd +''''
  else
  set @sqlStr=' where FJobAdd='+''''+@FJobAdd +''''
end
EXEC('select *from stuInfo '+ @sqlStr)
GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值