简单实现多条件查询

      我们在开发过程中,特别是数据库系统的开发中经常会遇到多条件的查询状况。例如:查询某一个部门某个时间段的车辆费用支出,这就涉及到多条件查询。其实多条件查询的方法有很多种,有些写法是比较烦琐,效率也不高,比如一个条件一个条件去if—else判断拼凑sql语句。我在这里使用一种个人觉得写法简单,理解也比较简单的方法:
  CREATE PROCEDURE
[dbo].[usp_GetFeeInfo]
             @Number nvarchar(50) = null,
--车牌号
             @Unit nvarchar(50) = null, --部门
             @FeeType
nvarchar(50) = null, --费用类型
             @StartDate datetime = null,
--查询的起始时间
             @EndDate datetime = null 
--查询的结束时间
AS
BEGIN
 select 
f.ID,
   f.Number,
   f.[Type],
   f.FeeDate,
   round(f.[Money],2)
as [Money],
   f.Status,
   f.Memo,
   c.id as
cid,
   c.unit1
 from Fee f left join Car c
 on f.Number =
c.Number
 where (f.Number = @Number or @Number is
null)  --如果@Number参数为null的话那表示这个字段不在查询的条件中;这可以在程序里简单的实现。
  and (c.unit1 =
@Unit or @Unit is null)
  and (f.[type] = @FeeType or @FeeType is
null)
  and (f.Feedate >= @StartDate or @StartDate is null)
  and
(f.Feedate <= @EndDate or @EndDate is null)
 order by f.FeeDate
desc
END

程序里面你只要把所有查询条件的值都录入进去。
例如:如果为“全部”的话,那就把这个字段的值设置为:null
原文地址:https://www.cnblogs.com/zwq194/p/1974801.html