多条件查询SQL语句

来源:互联网 发布:wto数据官网 编辑:程序博客网 时间:2024/05/16 09:22

如果有的条件为空,怎么办呢?如何修改最终的查询语句?

1.对条件进行空值判断;

2.进行查询语句的字符串拼接.

基本信息表结构如下:

存储过程语句:

create proc pr_select_Natural
(
 @CDATE  datetime,
 @FAC_NAME varchar(50),
 @BATTERY_TYPE varchar(20),
 @MAKE_MODE varchar(20),
 @PRODUCE_MODE varchar(20),
 @YEAR  char(4),
 @MONTH  char(2),
 @TDATE  datetime,
 @PAGENUM varchar(12)
)
as
declare @strWhere varchar(500)
if ( @CDATE = null )
 set @strWhere = @strWhere+' and CDATE ='+ @CDATE
if ( @FAC_NAME = null )
 set @strWhere = @strWhere+' and FAC_NAME like ''%''+@FAC_NAME+''%'' '
if ( @BATTERY_TYPE = null )
 set @strWhere = @strWhere+' and BATTERY_TYPE like ''%''+@BATTERY_TYPE+''%'''
if ( @MAKE_MODE = null )
 set @strWhere = @strWhere+' and MAKE_MODE like ''%''+@MAKE_MODE+''%'''
if ( @PRODUCE_MODE = null )
 set @strWhere = @strWhere+' and PRODUCE_MODE like ''%''+@PRODUCE_MODE+''%'''
if ( @YEAR = null )
 set @strWhere =@strWhere+ ' and YEAR like ''%''+@YEAR+''%'''
if ( @MONTH = null )
 set @strWhere = @strWhere+' and MONTH like ''%''+@MONTH+''%'''
if ( @TDATE = null )
 set @strWhere = @strWhere+' and TDATE = @TDATE'
if ( @PAGENUM = null )
 set @strWhere = @strWhere+' and PAGENUM like ''%''+@PAGENUM+''%'''
 
set @strMAIN = 'select
  CDATE  as 出厂时间,
  FAC_NAME  as 发货厂家,
  BATTERY_TYPE as 电池型号,
  SEND_TYPE as 发货类型,
  SEND_NUM as 检测数量,
  MAKE_MODE as 制作方式,
  PRODUCE_MODE as 生产方式,
  BATTERY_NUM as 电池组数量,
  [YEAR]  as 年,
  [MONTH] as 月,
  TDATE  as 日期,
  SEND_RULE as 发货规则,
  SEND_CODE as 发货组编号,
  BATTERY_SORT as 电池类别,
  PAGENUM as 条码号,
  FITTING_CODE as 装配号,
  LINE_CODE as 生产机号,
  FLAG  as 是否放行,
  REMARK  as 备注,
  OTHER  as 其他,
  BLANK_COL as 空白列
    from T_INFOCODE_NATURAL
 where 1=1 ' +@strWhere
exec(@strMAIN)


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xmasangel/archive/2007/12/05/1917743.aspx

原创粉丝点击