如果有的条件为空,怎么办呢?如何修改最终的查询语句?
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