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

如何用PostgREST筛选JSONB列数组含指定值且排除特定值的PostgreSQL记录

解决PostgREST筛选JSONB数组的问题

错误原因

你用column->>baz会把JSON数组转换成文本类型,而PostgREST的cs.(包含任意元素)操作符需要数组类型,类型不匹配才触发了报错。

正确请求URL

要筛选baz数组包含a=1或b=5且不包含c=1的记录,需保留JSON数组类型,使用以下请求:

/table?select=id&column->baz=cs.["a=1","b=5"]&column->baz=not.cs.["c=1"]

关键说明

  • column->baz:获取JSONB列里的baz数组,保持JSON数组类型,确保PostgREST能正确识别并使用数组操作符。
  • cs.["a=1","b=5"]:表示数组包含a=1或b=5中的任意一个(cs是contains any的缩写)。
  • not.cs.["c=1"]:表示数组不包含c=1这个元素。

备选写法(基于JSON包含)

也可以用JSON对象匹配的方式,逻辑等价但写法更直观:

/table?select=id&column@>'{"baz": ["a=1"]}'&or=column@>'{"baz": ["b=5"]}'&not.column@>'{"baz": ["c=1"]}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:22:08