首页/数据/SQL 速查/NULL 三值逻辑与运算表现
本包目录(311 条)

NULL 三值逻辑与运算表现

NULL 参与比较得到 UNKNOWN、参与算术得到 NULL、参与字符串拼接通常也得到 NULL;理解这些规则才能写对过滤与统计。

SQL 速查数据更新于 2026-10-12

行为演示

行为演示
SELECT NULL = NULL;            -- NULL(不是 TRUE)
SELECT NULL + 1;               -- NULL
SELECT CONCAT('a', NULL);      -- MySQL:NULL
SELECT 'a' || NULL;            -- PostgreSQL:NULL
SELECT NULL IS NULL;           -- TRUE
三值逻辑TRUE / FALSE / UNKNOWN,WHERE 只保留 TRUE
算术NULL 参与运算结果为 NULL
聚合除 COUNT(*) 外,聚合函数忽略 NULL 输入
约束唯一索引中多个 NULL 通常视为互不冲突
PostgreSQL 的 concat() 函数忽略 NULL 参数,而 || 运算符遇到 NULL 返回 NULL,函数与运算符行为要分清。

易错点

  • 统计平均值时 AVG(col) 的分母是非 NULL 行数,与 SUM(col)/COUNT(*) 结果不同,按业务口径选择
  • GROUP BY 会把 NULL 分成一组,但 WHERE col = NULL 取不出这组,需用 IS NULL

数据来源与参考

  • MySQL 8.0 Reference Manual · Working with NULL Values
  • PostgreSQL Documentation · Null Values
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌