【易踩坑】PostgreSQL中 null值与任意值比较结果均为null

在PostgreSQL中,NULL 表示“未知的值”,而不是某个具体的值。因此,任何与 NULL 的比较操作结果都不会返回 TRUE 或 FALSE,而是返回NULL(也可以理解为UNKNOWN)

举例:

1. NULL = '小明' 返回 NULL(不是 FALSE)        NULL = '小明' → NULL

因此,在布尔上下文中表现为 不成立,不会选中这条记录。

2. NULL <> '小明' 同样返回 NULL                        NULL <> '小明' → NULL

同理,在布尔上下文中表现为 不成立,不会选中这条记录

所以在where子句中这两个表达式都不会匹配到该行,只有 TRUE 的结果才会匹配记录。