上一篇
最新动态(2025年8月)
微软近期在SQL Server 2025的更新中优化了ISNULL()
函数的性能,对大表空值处理速度提升达17%!空值处理始终是数据清洗的关键环节,今天我们就来聊聊如何优雅应对这些"神秘失踪"的数据~
NULL在SQL中表示"未知"或"不存在",但它像幽灵一样容易引发问题:
5 + NULL = NULL
(整个算式直接失效) WHERE age = NULL
永远查不到结果 SUM()
会自动忽略NULL,但可能扭曲统计结果 SELECT ISNULL(phone_number, '未知号码') AS 联系电话, ISNULL(salary, 0) AS 保底薪资 FROM employees;
✅ 适用场景:单字段快速替换,第二个参数可以是固定值或表达式
SELECT COALESCE(微信, 手机号, 邮箱, '无联系方式') AS 联系途径, COALESCE(折扣价, 促销价, 原价) AS 最终价格 FROM products;
✨ 优势:从左到右返回第一个非NULL值,支持多个备选方案
SELECT CASE WHEN address IS NULL THEN '地址未登记' WHEN address = '' THEN '地址待完善' ELSE address END AS 完整地址 FROM customers;
🎯 适用场景:需要复杂条件判断时(比如区分NULL和空字符串)
UPDATE orders SET delivery_notes = '无特殊要求' WHERE delivery_notes IS NULL;
⚠️ 注意:会直接修改原数据,操作前建议备份
ALTER TABLE students ADD CONSTRAINT DF_Score DEFAULT 60 FOR math_score;
🔒 最佳实践:建表时就设置DEFAULT约束,从源头减少NULL
NULLIF()
反转SELECT AVG(NULLIF(test_score, 0)) AS 平均分 -- 把0转成NULL避免影响平均值 FROM exam_results;
SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('你的表名') AND is_nullable = 1;
SELECT name, ISNULL(JSON_QUERY(profile), '{}') AS profile FROM users FOR JSON PATH;
WHERE column = NULL
要写成 WHERE column IS NULL
COALESCE(column, 'N/A')
会导致全表扫描 NOT IN (1, 2, NULL)
永远返回空结果集! 开始
|
需要处理多个备选值? —— YES → COALESCE()
|
NO
|
需要永久修改数据? —— YES → UPDATE + ISNULL()
|
NO
|
需要复杂条件判断? —— YES → CASE WHEN
|
NO
|
简单单字段替换 → ISNULL()
掌握这些技巧,下次遇到NULL就能淡定地说:"小样,看我怎么收拾你!" 💪 记得在测试环境先验证方案哦~
本文由 摩春海 于2025-08-02发表在【云服务器提供商】,文中图片由(摩春海)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/517610.html
发表评论