为什么 != 不起作用?如何与空值进行比较?

Sij*_*tha 3 postgresql

我很难理解为什么以下查询不起作用?

select id,sold_dealer_id from myi_corporate where sold_dealer_id != 36;

当我执行以下操作时,我得到结果

select id,sold_dealer_id from myi_corporate where sold_dealer_id = 36;

然而,!=我没有得到相反的结果。

在使用 MongoDB 很长时间后,我又回到了 psql,可能已经忘记了基础知识。任何建议都非常感激

Lau*_*lbe 7

您可以使用!=而不是 SQL 标准运算符<>,但我建议使用后者。但这对你的问题没有影响。

您的表中必须包含一些 NULL 值sold_dealer_id

NowNULL = 36不是 true,但也不NULL <> 36是true,因此这些行将从两个查询结果中排除。

您可以使用sold_dealer_id IS DISTINCT FROM 36得到相反的结果sold_dealer_id = 36。该运算符会将 NULL 值视为正常值。