簡體   English   中英

(在參數中傳遞“all”?)| 我如何制作參數? 在 WHERE 過濾器中返回 ALL 在 sql 請求中

[英](pass "all" in parameter ?) | how can I make parameter ? in WHERE filter to be a return of ALL in sql request

我正在按照 MVVM 制作一個 wpf C# 應用程序。 它通過 ServerExplorer 使用 DataSet 處理來自 accdb(帶有多個連接的表)的數據。 我現在正在嘗試進行過濾搜索。

        SELECT        IDBug, [Date], ReportedBy, Replicated, ReproducableSteps, AppArea, Status, FixedVer, FixedBy, Notes, Title
        FROM            Bugs
        WHERE      ([Date] >=  ?)
        AND ([Date] <= ?) 
        AND (Status = ?)
        AND (AppArea = ?)
        AND (Replicated = ?)
        AND (ReportedBy =  ?)

這是有效的,但前提是使用所有過濾器設置。

        int idAr = (from DataRow dr in ars.GetData().Rows
                                        where (string)dr["Area"] == AreaSe.ToString()
                                        select (int)dr["IDArea"]).FirstOrDefault();
        

        int idCust = (from DataRow dr in custs.GetData().Rows
                                          where (string)dr["CustomerName"] == CustomS.ToString()
                                          select (int)dr["IDCustomer"]).FirstOrDefault();


        BugTable = bugs.GetT(StartDate, StopDate, State, idAr, replicationS, idCust);

我的數據中確實有一些空值,這就是為什么我試圖做類似於

WHERE 標題 = ? 或 (? 是 NULL))

代替

WHERE 標題 = ?

對於每個參數。 但它弄亂了數據類型......

我不認為為每種情況編寫不同的 sql 查詢是明智的,所以我需要知道如何將“SELECT ALL”傳遞給 ? 范圍。

您可以像這樣在where子句中使用用case 您可以將null作為參數的默認值傳遞。

因此,如果未通過,它將返回@param的記錄,否則它將返回所有記錄。

SELECT Col1, Col2….
FROM TableName 
WHERE ColName = CASE WHEN @param IS NULL THEN ColName ELSE @param END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM