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

如何在PostgreSQL中查询JSON列:获取指定UserId的数据

查询JSON数组中指定UserId的记录

针对JSON类型列的查询语句

如果你的value列是JSON类型,用下面的SQL展开数组并筛选:

SELECT du.*
FROM participant_preference pp,
     json_array_elements(pp.value->'DiaryUsers') AS du
WHERE du->>'UserId' = 'HUV65PV1';

针对JSONB类型列的查询语句(推荐)

如果value列是JSONB类型(建议将JSON列转为JSONB,查询性能更好),可以用:

SELECT du.*
FROM participant_preference pp,
     jsonb_array_elements(pp.value->'DiaryUsers') AS du
WHERE du->>'UserId' = 'HUV65PV1';

关键语法说明

  • pp.value->'DiaryUsers':从value列中提取DiaryUsers数组
  • json_array_elements/jsonb_array_elements:把数组拆分成独立的行记录,方便逐行筛选
  • du->>'UserId':将数组元素里的UserId字段转为文本格式,用于和目标值HUV65PV1匹配

如果需要返回表的整行数据

如果你不想只拿数组里的匹配元素,而是要返回participant_preference表中包含该用户的整行记录,可以用:

SELECT pp.*
FROM participant_preference pp
WHERE EXISTS (
    SELECT 1
    FROM json_array_elements(pp.value->'DiaryUsers') AS du
    WHERE du->>'UserId' = 'HUV65PV1'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:16:04