繁体   English   中英

条件where子句SQLServer

[英]conditional where clause SQLServer

我正在使用SQLServer 2008并遇到此问题。 我有一个功能,用户可以从菜单中选择多个日期。 他们还可以选择“选择所有日期”复选框。

如果他们选中该复选框,则我的查询应仅在给定日期返回结果。 因此执行WHERE子句。 如果他们没有选择复选框,而是选择了一个或多个日期; 该查询应使用where子句执行。

我有两个参数。 -SelectedDates(例如'2012-11-15','2012-11-15')-AllDates('X'或'')

通常,查询谁看起来像这样:

SELECT * FROM x
WHERE x.date in ([Param.1])

所以我的问题是:在不需要WHERE子句的情况下,如何调整查询。

仅供参考:[Param.1]符号用于我正在工作的环境中。

简单,使用OR子句,如果选中alldates,它将从所有日期返回数据,如下所示:

SELECT * FROM x
WHERE x.date in ([Param.1]) OR ([Param.2]) = 'X'

如果选中了Param.2('X'),它将忽略第一个条件的结果,因为您正在使用OR子句。

如果控件中存在所有日期,那么check all也会生成日期,因此您仍然可以使用WHERE IN('date1',....'dateN')

您也有这种选择

WHERE x.Date IN (.....) OR AllDates = 'X'

这里AllDates是第二个参数,当用户选中“所有日期”复选框时

IF(AllDates is not null)
SELECT * FROM x
ELSE
SELECT * FROM x
WHERE x.date in ([Param.1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM