如何在 SQL WHERE 子句中使用 CASE 语句



框架:ASP.NET 网络表单。

我有两个文本框,一个用于输入开始日期时间,另一个用于结束日期时间。我还有一个下拉列表,允许用户在"本地时间"和"UTC"之间进行选择。

场景是

  1. 如果用户在下拉列表中选择"本地时间",请在[LocalTimeColumn]列中检索@StartDateTime@EndDateTime之间的结果

  2. 如果用户在下拉列表中选择"UTC",则在[UTCColumn]列中检索@StartDateTime@EndDateTime之间的结果

我编写的 SQL 查询不起作用:

SELECT *
FROM [vmc]
WHERE 
@DropDownList = CASE
WHEN @DropDownList = "Local Time"
THEN ([LocalTimeColumn] BETWEEN @StartDateTime AND @EndDateTime)
ELSE ([UTCColumn] BETWEEN @StartDateTime AND @EndDateTime)
END

CASE表达式的谓词(即THENELSE后面的内容(必须是标量值,而不是另一个逻辑表达式。 您可以通过稍微重构来使WHERE子句执行您想要的操作:

SELECT *
FROM [vmc]
WHERE
(@DropDownList = "Local Time" AND
[LocalTimeColumn] BETWEEN @StartDateTime AND @EndDateTime) OR
[UTCColumn] BETWEEN @StartDate AND @EndDate;

相关内容

  • 没有找到相关文章

最新更新