IF 与 CASE 流程控制要点
- IF(条件, 真值, 假值) 二选一,条件成立取前者
- CASE WHEN 条件 THEN 结果 ... ELSE 结果 END 支持多分支
- CASE 可写成 CASE 表达式 WHEN 值 THEN ... 的等值匹配形态
- IFNULL(v1, v2) 当 v1 为 NULL 时返回 v2
- COALESCE(a,b,c) 从左到右返回第一个非空值
- NULLIF(a, b) 两值相等时返回 NULL,否则返回 a
IF 与 CASE 流程控制示例
-- 给订单标状态
SELECT order_id,
IF(paid = 1, '已支付', '未支付') AS state
FROM orders;
-- 多档折扣分段
SELECT product_id,
CASE
WHEN price ≤ 100 THEN '低价'
WHEN price ≤ 500 THEN '中价'
ELSE '高价' END AS tier
FROM product;
-- 昵称为空时给个默认名
SELECT IFNULL(nickname, '匿名用户') AS name
FROM user;
避坑提醒:CASE 的分支是从上往下匹配,命中第一个就停。分段区间务必从小到大排,否则『小于 500』这种分支会把后面更细的区间全挡掉。