(在参数中传递 "all"?) |我该如何制作参数?在 WHERE 过滤器中是 return of ALL in 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 Title = ? OR (? IS NULL))
而不是
WHERE Title = ?
对于每个参数。但是它弄乱了数据类型...
我认为为每种情况编写不同的 sql 查询并不明智,所以我需要知道如何将“SELECT ALL”传递给?参数.
您可以像这样在 where
子句中使用 case
。您可以传递 null
作为参数的默认值。
所以它将 return @param
的记录,如果它没有通过,否则它将 return 所有记录。
SELECT Col1, Col2….
FROM TableName
WHERE ColName = CASE WHEN @param IS NULL THEN ColName ELSE @param END
我正在制作一个遵循 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 Title = ? OR (? IS NULL))
而不是
WHERE Title = ?
对于每个参数。但是它弄乱了数据类型...
我认为为每种情况编写不同的 sql 查询并不明智,所以我需要知道如何将“SELECT ALL”传递给?参数.
您可以像这样在 where
子句中使用 case
。您可以传递 null
作为参数的默认值。
所以它将 return @param
的记录,如果它没有通过,否则它将 return 所有记录。
SELECT Col1, Col2….
FROM TableName
WHERE ColName = CASE WHEN @param IS NULL THEN ColName ELSE @param END