You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL JSON查询中设置内置逻辑否定的过滤条件

实现方案

你需要的否定逻辑可以通过两种 PostgreSQL 原生JSON操作方式实现,均不需要在外层添加NOT包裹原有匹配逻辑:

方案1:提取JSON字段直接做不等判断

直接取出transferToken字段值进行不等比较,兼容性最好:

select voucherbatchtransaction.detailsjson from voucherbatchtransaction
where (voucherbatchtransaction.detailsjson::jsonb ->> 'transferToken') != 'fake_token'

如果需要同时过滤掉不存在transferToken字段的记录,可以额外添加存在性判断:

select voucherbatchtransaction.detailsjson from voucherbatchtransaction
where voucherbatchtransaction.detailsjson::jsonb ? 'transferToken' 
and (voucherbatchtransaction.detailsjson::jsonb ->> 'transferToken') != 'fake_token'

方案2:使用JSONPath表达式匹配(PostgreSQL 12+支持)

直接在JSONPath语法内写否定逻辑,完全封装在JSON相关判断内部:

select voucherbatchtransaction.detailsjson from voucherbatchtransaction
where voucherbatchtransaction.detailsjson::jsonb @@ '$ ? (@.transferToken != "fake_token")'

注意:PostgreSQL原生的@>包含操作符本身不支持在JSON匹配串内写入否定语法,因此无法直接通过修改@>后的JSON参数实现你的伪代码效果,上述两种方案均可满足你“不额外在外层加NOT”的嵌入需求

内容的提问来源于stack exchange,提问作者dokichan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:18:02