簡體   English   中英

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

[英]How to use CASE statement in SQL WHERE clause

框架:ASP.NET Web表單。

我有兩個文本框,一個用於輸入開始日期時間,另一個用於結束日期時間。 我還有一個下拉列表,允許用戶在“本地時間”和“ UTC”之間進行選擇。

場景是

  1. 如果用戶在下拉列表中選擇“本地時間”, @EndDateTime[LocalTimeColumn] @EndDateTime [LocalTimeColumn]列中的@StartDateTime@EndDateTime之間檢索結果

  2. 如果用戶在下拉列表中選擇“ UTC”, @EndDateTime[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;

暫無
暫無

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

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