学习指南 →

· Albion Gateway College

SQL 大学课程:NULL 为什么不能用等号判断?

以原创缺失值表解释 SQL 三值逻辑、IS NULL 和筛选条件,避免把未知误写成零或空字符串。

未知不是数值零

设练习表有三个score:8、NULL、0。NULL表示此处没有已知的值,它不是0,也不等于空字符串。在SQL中score = NULL不会按普通相等判断筛出缺失行。

应使用score IS NULL。相反,score IS NOT NULL会保留8和0。先明确缺失的业务含义,再考虑是否可以填补,不能为了让查询通过就统一改成0。

WHERE只保留真值

条件score > 5对8为真,对0为假,对NULL为未知。WHERE只保留条件为真的行,所以NULL行也被排除。这一点对NOT(score > 5)同样重要:未知取反仍是未知。

若需要所有不超过5的分数以及缺失行,应明确写score <= 5 OR score IS NULL。它和NOT(score > 5)的结果不同,差别就在NULL行。

NOT IN 的隐藏风险

再建一个候选集合(1,NULL)。表达式2 NOT IN (1,NULL)不是简单的真,因为与NULL的比较带来未知。数据库专业课中,可用小表同时检查匹配、未匹配和缺失三种情况。

自查时写出每行的真/假/未知,不只对照总行数。若业务问题是“没有对应记录”,研究NOT EXISTS及关联条件通常更清楚;它仍需精确定义要匹配的键与缺失政策。

参考资料

下一步

如需大学专业课程或 Tutorial 学习支持,请在咨询中填写模块名称、学习目标和已尝试的步骤。具体教学安排须确认,计分作业由学生独立完成。

继续阅读

学院在线咨询

欢迎咨询

你好,欢迎咨询!你是学生、招生代理、求职者,还是想申请成为导师?请告诉我你的咨询方向。

[email protected]