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

PostgreSQL如何查询JSON数组字段包含指定值的记录ID

PostgreSQL JSON数组包含查询方案

你当前表的bar_id为JSON类型的数值数组,查询包含437的记录id可使用以下两种方案:

  • 方案1:兼容现有JSON字段类型,无需修改表结构
SELECT id
FROM 你的表名
WHERE EXISTS (
    SELECT 1 
    FROM json_array_elements(bar_id) AS elem
    WHERE elem::text::int = 437
);

实现逻辑:通过json_array_elements将JSON数组拆分为单元素行,匹配到数值为437的元素时,就返回对应记录的id。

  • 方案2:切换为JSONB类型优化查询(推荐)
    如果可调整表结构,建议将bar_id字段改为JSONB类型,不仅支持更简洁的包含操作符,还可以创建GIN索引大幅提升查询效率:
-- 可选:修改字段类型为JSONB
ALTER TABLE 你的表名 ALTER COLUMN bar_id TYPE jsonb USING bar_id::jsonb;

-- 查询语句
SELECT id
FROM 你的表名
WHERE bar_id @> '[437]'::jsonb;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:07