CASE WHEN 语句用于 SQL 中根据指定条件评估表达式并返回不同值。它的语法包含 WHEN 子句(条件表达式和返回表达式)、ELSE 子句(默认表达式)和 END 关键字。它可用于各种场景,包括分配值、修改结果和转换数据格式。

CASE WHEN 语句在 SQL 中的用法
CASE WHEN 语句是一种 SQL 查询中的控制流语句,用于根据指定条件评估不同的表达式。其语法如下:
CASE WHENTHEN WHEN THEN ... ELSE END
用法:
- 条件(Condition):指定用于评估表达式的布尔表达式。
- 表达式(Expression):如果条件为真,则求值并返回的值。
- 默认表达式(Default_expression):当没有条件为真时,求值并返回的值。
步骤:
- 确定要评估的条件:确定你想基于什么条件返回不同的值。
- 编写 WHEN 子句:对于每个条件,使用 WHEN 子句指定条件和要返回的表达式。
- 添加 ELSE 子句:指定当所有条件都不满足时的默认返回值(可选)。
- 结束 CASE 语句:使用 END 关键字结束 CASE 语句。
示例:
系统功能强大、操作便捷并具有高度延续开发的内容与知识管理系统,并可集合系统强大的新闻、产品、下载、人才、留言、搜索引擎优化、等功能模块,为企业部门提供一个简单、易用、开放、可扩展的企业信息门户平台或电子商务运行平台。开发人员为脆弱页面专门设计了防刷新系统,自动阻止恶意访问和攻击;安全检查应用于每一处代码中,每个提交到系统查询语句中的变量都经过过滤,可自动屏蔽恶意攻击代码,从而全面防止SQL注入攻击
要根据客户的年龄组为客户分配折扣,可以使用以下 SQL 查询:
SELECT CASE WHEN age < 18 THEN 0.1 WHEN age >= 18 AND age < 25 THEN 0.15 WHEN age >= 25 AND age < 35 THEN 0.2 ELSE 0.25 END AS discount FROM customers;
在这个查询中:
- 条件根据客户的年龄对客户进行分组。
- 表达式指定每个年龄组的折扣率。
- 默认表达式为 0.25,表示 35 岁以上的所有客户的折扣率。
用例:
CASE WHEN 语句可用于各种场景,包括:
- 根据条件分配不同的值(如折扣或分类)。
- 基于条件修改查询结果(如过滤或排序)。
- 转换数据格式(如将文本转换为数字)。









