场景:
select api_id, supplier_id, api_supplierfee, api_del
from t_ac_api
where api_del = 0;

查询:
select api.supplier_id
from t_ac_api api
where api.api_supplierfee <> ''
and api.api_supplierfee is not null
and api_del = 0;

原因:
- SQL中不等于条件使用!=和<>来表示
- SQL比较两个表达式(比较运算符)
当比较非空表达式时,如果左边操作数的数值不等于右边的操作数,则结果为 TRUE;否则结果为 FALSE。
如果两个操作数中有一个或者两个都为 NULL,并且 SET ANSI_NULLS 被设置为 ON,则结果为 NULL。如果 SET ANSI_NULLS 被设置为 OFF,则当一个操作数为 NULL 时结果为 FALSE,当两个操作数都为 NULL 时结果为 TRUE。
所以用PostgreSQL操作符不等于<>时,还必须加上OR the_column IS NULL
验证:
select api.supplier_id,api.api_supplierfee
from t_ac_api api
where api.api_supplierfee <> ''
OR api_supplierfee IS not NULL
and api_del = 0;

本文探讨了在SQL查询中使用PostgreSQL的不等于运算符(<>)时,如何正确处理非空值和NULL值的情况,通过实例展示了加上OR the_columnISNULL的必要性。重点讲解了SQL比较逻辑和SETANSI_NULLS设置的影响。

被折叠的 条评论
为什么被折叠?



