再看看 SQL 中的 null

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

NULL 与任何值运算结果均为 NULL。在查询中,使用 IS NULL 或 IS NOT NULL 处理 NULL 值,聚合函数如 avg 会忽略 NULL,coalesce 可提供默认值。NULLIF 函数可将相等值转换为 NULL。在 PostgreSQL 中,NULL 以二进制形式传输,并通过位图标记和存储。

🎯

关键要点

  • NULL 与任何值的运算结果都是 NULL。
  • 对于包含 NULL 值的列,使用 IS NULL 或 IS NOT NULL 进行处理。
  • IS 操作符可以用于布尔值,IS NOT 提供更精确的不等于操作。
  • 在字符串连接中,使用 || 运算符时,任何一项为 NULL 则结果为 NULL,而使用 concat 函数时,NULL 会被忽略。
  • 在布尔逻辑中,NULL 代表未知,与真和假构成三值集合。
  • 在聚合函数中,NULL 值会被忽略,使用 coalesce 函数可以为 NULL 提供默认值。
  • NULLIF 函数可以将相等值转换为 NULL,主要用于将零值转换为空值。
  • 在 PostgreSQL 中,NULL 值以二进制形式传输,使用 len = -1 表示 NULL 值。
  • 当行中有任一列值为 NULL 时,行头会标记为 HEAP_HASNULL,使用位图存储 NULL 情况。

延伸问答

在 SQL 中,如何处理 NULL 值?

可以使用 IS NULL 或 IS NOT NULL 来处理 NULL 值。

NULL 值在聚合函数中会如何影响结果?

在聚合函数中,NULL 值会被忽略,例如 avg 函数会忽略 NULL 值。

什么是 COALESCE 函数,它的作用是什么?

COALESCE 函数可以接受多个参数,返回第一个非 NULL 的值。

NULLIF 函数的用途是什么?

NULLIF 函数用于将两个相等的值转换为 NULL,常用于将零值转换为空值。

在 PostgreSQL 中,NULL 值是如何存储的?

NULL 值在 PostgreSQL 中以二进制形式传输,并通过位图标记和存储。

在布尔逻辑中,NULL 值的表现是什么?

在布尔逻辑中,NULL 代表未知,与真和假构成三值集合,运算结果通常为 NULL。

➡️

继续阅读