(在参数中传递"all"?|如何制作参数?在 WHERE 过滤器中返回 SQL 请求中的 ALL



我正在制作一个wpf c#应用程序以下MVVM。它通过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 Title = ?或(?是NULL)

不是

WHERE Title = ?

表示每个参数。但是它混淆了数据类型…

我不认为这是聪明的写一个不同的sql查询为每个情况下,所以我需要知道我怎么能通过"SELECT ALL"到a ?参数。

您可以这样在where子句中使用case

默认值为"null

"。如果没有传递,它将返回@param的记录,否则它将返回所有记录。

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

最新更新