SQL条件函数详解
一、CASE WHEN:最通用的条件表达式
CASE 列名
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
ELSE 默认结果
END
1. 简单CASE表达式
示例
SELECT
name,
CASE grade
WHEN 'A' THEN '优秀'
WHEN 'B' THEN '良好'
WHEN 'C' THEN '及格'
ELSE '不及格'
END AS grade_desc
FROM students;
2. 搜索CASE表达式(更灵活)
示例
SELECT
salary,
CASE
WHEN salary < 3000 THEN '低'
WHEN salary BETWEEN 3000 AND 8000 THEN '中'
WHEN salary > 8000 THEN '高'
ELSE '未知'
END AS level
FROM employees;
二、COALESCE:返回第一个非空值
COALESCE函数
COALESCE(value1, value2, ..., valueN)
返回参数列表中第一个非NULL值,支持任意数量参数:
示例
-- 优先使用手机号,其次座机,最后固定电话
SELECT
name,
COALESCE(mobile, phone, fixed_line, '无联系方式') AS contact
FROM users;
与 CASE WHEN 对比
-- 使用COALESCE(简洁):返回第一个非 NULL 表达式
SELECT
COALESCE(email, '无邮箱') AS email_status
FROM users;
-- 使用CASE WHEN(冗长):显式判断 NULL
SELECT
CASE
WHEN email IS NOT NULL THEN email
ELSE '无邮箱'
END AS email_status
FROM users;
三、NULLIF:返回NULL如果两值相等
NULLIF函数
NULLIF(expr1, expr2)
当 expr1 = expr2 时返回 NULL,否则返回 expr1
主要用途
避免除零错误:NULLIF(denominator, 0)
数据去重标记:当两列相同时转为NULL
示例
SELECT
numerator,
denominator,
numerator / NULLIF(denominator, 0) AS safe_ratio
FROM fractions;
-- 当denominator=0时,结果变为NULL而不是报错


被折叠的 条评论
为什么被折叠?



