SQL 课程 8:关于 NULL 值的简要说明

NULL 表示“这个值未知、缺失或不适用”。它不是数字 0,也不是空白文本。在 CRM 数据里,未关闭的商机没有关闭日期;独立客户没有母公司,这些都适合用 NULL 表示。

NULL 最容易造成分析误差:如果把它当作普通值比较,往往得不到预期结果。因此 SQL 为它准备了专门的 IS NULL 和 IS NOT NULL 写法。

筛选缺失与非缺失的值
WHERE 字段 IS NULL
WHERE 字段 IS NOT NULL

为什么不能写 = NULL?

普通比较的前提是两边都有确定的值;NULL 的意思恰恰是“未知”,因此 SQL 无法判断“未知是否等于未知”。写 WHERE close_date = NULL 不会得到你想要的结果。

需要查询缺失数据时用 IS NULL;需要保留已填写的数据时用 IS NOT NULL。这两个写法没有等号。

找出尚未关闭的商机
SELECT opportunity_id, deal_stage, close_date
FROM sales_pipeline
WHERE close_date IS NULL;

小提醒:如果字段的实际值是空字符串 '',它不是 NULL,需要写字段 = ''。使用前最好先理解数据来源的缺失值规则。

产品分析中,NULL 往往值得先解释

发现 NULL 后,不要立刻把它当成错误。例如未关闭商机的 close_date 为空是合理业务状态;但产品名称无法匹配产品目录,则可能是数据同步或命名规范问题。

一个稳妥的习惯是:先统计缺失数据代表什么,再决定是否筛掉、补值或单独作为一类展示。

本课程 CRM 数据中的 NULL 示例

字段NULL 在这里代表什么常见分析处理
accounts.subsidiary_of该客户没有记录母公司可识别独立客户
sales_pipeline.close_date商机仍在跟进,尚未关闭不要计入已关闭商机
外连接右表字段左表记录没有匹配对象用于排查漏关联或数据质量

练习

请使用 IS NULL 或 IS NOT NULL。系统会验证所有缺失记录,而不是只检查结果中的一条示例。

表格:accounts(客户档案)

查询返回 0 行。

显示第 00
1 / 1
正在准备浏览器内 SQL 数据库…