首頁 > 資料庫 > mysql教程 > 如何在SQL WHERE子句中使用CASE語句進行條件過濾?

如何在SQL WHERE子句中使用CASE語句進行條件過濾?

Barbara Streisand
發布: 2025-01-10 06:20:41
原創
234 人瀏覽過

How Can I Use a CASE Statement in a SQL WHERE Clause for Conditional Filtering?

SQL中WHERE子句的Switch/Case語句

查詢語句:

以下查詢嘗試在WHERE子句中使用CASE語句,根據@locationType和@locationID的值進行過濾:

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location = @locationID
    WHEN 'area' THEN xxx_location_area = @locationID
    WHEN 'division' THEN xxx_location_division = @locationID
END;</code>
登入後複製

錯誤:

此查詢導致語法錯誤,因為CASE表達式期望單一傳回值。各個WHEN子句錯誤地包含了不屬於CASE表達式的等式比較(= @locationID)。

解:

在WHERE子句中使用CASE語句的正確語法是將表達式賦值給目標列:

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area
      WHEN 'division' THEN xxx_location_division
  END;</code>
登入後複製

在這個修改後的查詢中,CASE表達式會根據@locationType的值傳回對應的定位標識符。然後,WHERE子句將此值與@locationID進行比較,以按預期過濾結果。

以上是如何在SQL WHERE子句中使用CASE語句進行條件過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板