温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

sql怎么处理空值数据

发布时间:2026-10-27 21:43:13 来源:亿速云 阅读:93 作者:小樊 栏目:数据库

在 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;

二、替换空值(最常用)

1️⃣ MySQL / PostgreSQL / SQL Server

SELECT IFNULL(age, 0) FROM user;
-- 或
SELECT COALESCE(age, 0) FROM user;

2️⃣ PostgreSQL 专用

SELECT COALESCE(age, 0) FROM user;

3️⃣ SQL Server

SELECT ISNULL(age, 0) FROM user;

✅ COALESCE 是标准 SQL,推荐优先使用


三、参与计算时避免 NULL 影响

NULL 参与计算结果还是 NULL:

SELECT price * quantity FROM orders; -- 任一为 NULL 结果就是 NULL

✅ 处理方式:

SELECT COALESCE(price, 0) * COALESCE(quantity, 0)
FROM orders;

四、统计时忽略 / 包含 NULL

忽略 NULL(默认)

SELECT COUNT(age) FROM user;

包含 NULL 行数

SELECT COUNT(*) FROM user;

求和忽略 NULL

SELECT SUM(age) FROM user;

五、排序时空值位置

MySQL

  • NULL 默认排在最前

PostgreSQL(控制位置)

SELECT * FROM user
ORDER BY age NULLS LAST;

SQL Server

SELECT * FROM user
ORDER BY ISNULL(age, 9999);

六、删除或更新空值数据

删除 NULL 数据

DELETE FROM user WHERE age IS NULL;

将 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 可能影响索引使用

如果你能告诉我:

  • 使用的数据库(MySQL / PostgreSQL / Oracle / SQL Server)
  • 具体业务场景(统计?展示?清洗?)

我可以给你更针对性的 SQL 示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手