与空比较总是空的。将NULL视为“未知值”。是否有未知值不等于“OK”?这是未知的。。。所以结果是空的。
在逻辑表达式中,NULL被视为FALSE。因此,您不会收到想要接收的行。
必须对空值应用附加检查(
WHERE status != 'OK' OR status IS NULL
)或者在比较之前将空值转换为某个确定的常量值(
WHERE COALESCE(status, '') != 'OK'
).
注意——这种解释不同于检查约束(包括外键约束)中使用的解释,在检查约束中,空值被视为“匹配”。