SQLPathLab
条件与 NULL · 基础

CASE WHEN

在查询结果中按条件返回不同的值。

简介

CASE WHEN 按从上到下的顺序判断条件,并返回第一个命中分支的结果。没有 ELSE 且所有条件都不成立时会返回 NULL。各分支结果应使用兼容的数据类型,并先写更具体的条件,避免被前面的宽泛条件提前匹配。

基础语法

SELECT name, CASE WHEN amount >= 1000 THEN 'High' ELSE 'Normal' END AS level FROM orders;

示例

CASE WHEN 示例

按 amount 是否达到 1000,把订单标记为 High 或 Normal。

示例数据表

表名:orders
orders
nameamount
Alice 1200
Bob 900
Cindy 1500
David 700

运行结果

result
namelevel
Alice High
Bob Normal
Cindy High
David Normal

常见问题

CASE WHEN 必须写 ELSE 吗?

不是必须,但不写 ELSE 时不满足条件的行会返回 NULL。

CASE WHEN 可以写多个 WHEN 吗?

可以,SQL 会从上到下判断,命中第一个条件后返回对应结果。

CASE WHEN 可以用于 GROUP BY 吗?

可以,常用于先分类再统计,例如按金额区间分组。

标签

条件判断常用

这篇内容是否清楚?