PostgreSQL NULL值
概述
NULL表示"未知"或"无值",它不等于空字符串或零。在PostgreSQL中正确处理NULL值对于数据完整性和查询准确性非常重要。
NULL的特性
基本特性
- NULL不等于任何值,包括NULL本身
- NULL与任何值的运算结果都是NULL
- NULL在布尔运算中表示"未知"
检测NULL值
IS NULL和IS NOT NULL
NULL与运算
算术运算
字符串连接
布尔运算
处理NULL的函数
COALESCE函数
返回第一个非NULL值:
NULLIF函数
如果两个值相等则返回NULL:
NVL函数(通过COALESCE实现)
NULL与聚合函数
聚合函数忽略NULL
包含NULL的聚合
NULL与排序
默认排序行为
控制NULL排序位置
NULL与DISTINCT
NULL与索引
B-tree索引
部分索引优化
NULL与约束
NOT NULL约束
UNIQUE约束与NULL
CHECK约束与NULL
实际应用示例
处理可选字段
条件替换
安全的数值计算
最佳实践
- 使用IS NULL:永远不要用
= NULL比较 - 善用COALESCE:提供默认值避免NULL传播
- 注意聚合:了解聚合函数如何处理NULL
- 文档化:记录哪些列允许NULL及其业务含义
- 默认值:考虑使用DEFAULT而不是允许NULL