PostgreSQL不等于操作<>

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

场景:

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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值