簡單實現多條件查詢 by hyw

轉帖:http://www.cnblogs.com/oceanshare/archive/2010/02/09/1666370.html

 

       我們在開發過程中,特別是數據庫系統的開發中經常會遇到多條件的查詢狀況。例如:查詢某一個部門某個時間段的車輛費用支出,這就涉及到多條件查詢。其實多條件查詢的方法有很多種,有些寫法是比較煩瑣,效率也不高,比如一個條件一個條件去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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章