SQL NULL处理
学习NULL · 难度:入门 · +10XP
SQL NULL 处理 —— COALESCE、NULLIF、IFNULL
NULL在SQL中表示未知或缺失的值。NULL不等于任何值(包括NULL本身)——NULL = NULL的结果是NULL(不是TRUE)。正确处理NULL是SQL开发的基本功。
COALESCE —— 返回第一个非NULL值
-- 语法:COALESCE(val1, val2, ..., valN)
-- 从左到右返回第一个不为NULL的值
SELECT
name,
COALESCE(phone, '无电话') AS 联系电话,
COALESCE(email, phone, '无联系方式') AS 联系方式
FROM users;
NULLIF —— 相等则返回NULL
-- NULLIF(a, b): 如果a=b则返回NULL,否则返回a
-- 常用于避免除零错误
SELECT amount / NULLIF(quantity, 0) AS 单价 FROM orders;
IFNULL (MySQL) / ISNULL (SQL Server)
-- MySQL: IFNULL(expr, replacement)
SELECT name, IFNULL(nickname, name) AS 显示名称 FROM users;
NULL比较的正确方式
-- 错误:col = NULL 永远不成立
-- 正确:col IS NULL 或 col IS NOT NULL
SELECT * FROM users WHERE phone IS NULL;
SELECT * FROM users WHERE email IS NOT NULL;
动手练习
- 基础练习:创建用户表(姓名、电话、邮箱可能为NULL),用COALESCE找出每人可用的联系方式。
- 进阶应用:用NULLIF防止统计报表中的除零错误。
- 项目实战:在实际项目中排查因NULL处理不当导致的查询结果缺失问题。
接下来学什么?
下一课学习字符串拼接——CONCAT和CONCAT_WS函数。