首页 > 数据库 > mysql教程 > 如何在SQL WHERE子句中使用CASE语句进行条件过滤?

如何在SQL WHERE子句中使用CASE语句进行条件过滤?

Barbara Streisand
发布: 2025-01-10 06:20:41
原创
192 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板