在 SQL 中,“空值”通常指的是 NULL,它表示“未知 / 不存在”,而不是 0 或空字符串。处理 NULL 数据常见场景包括:查询、过滤、计算、排序、替换、统计 等。下面按使用频率给你总结。
❌ 错误写法:
SELECT * FROM user WHERE name = NULL;
✅ 正确写法:
SELECT * FROM user WHERE name IS NULL;
SELECT * FROM user WHERE name IS NOT NULL;
SELECT IFNULL(age, 0) FROM user;
-- 或
SELECT COALESCE(age, 0) FROM user;
SELECT COALESCE(age, 0) FROM user;
SELECT ISNULL(age, 0) FROM user;
✅ COALESCE 是标准 SQL,推荐优先使用
NULL 参与计算结果还是 NULL:
SELECT price * quantity FROM orders; -- 任一为 NULL 结果就是 NULL
✅ 处理方式:
SELECT COALESCE(price, 0) * COALESCE(quantity, 0)
FROM orders;
SELECT COUNT(age) FROM user;
SELECT COUNT(*) FROM user;
SELECT SUM(age) FROM user;
SELECT * FROM user
ORDER BY age NULLS LAST;
SELECT * FROM user
ORDER BY ISNULL(age, 9999);
DELETE FROM user WHERE age IS NULL;
UPDATE user SET age = 0 WHERE age IS NULL;
SELECT
user_id,
COALESCE(SUM(amount), 0) AS total
FROM orders
GROUP BY user_id;
| 场景 | 注意点 |
|---|---|
| NULL = NULL | ❌ 永远是未知 |
| NULL + 1 | 结果是 NULL |
| NOT IN + NULL | 可能查不到数据 |
| 索引 | NULL 可能影响索引使用 |
如果你能告诉我:
我可以给你更针对性的 SQL 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。