PostgreSQL中如何从jsonb[]列提取指定title的JSONB对象?
问题原因与解决方法
你的列类型是jsonb[](PostgreSQL原生数组,每个元素是JSONB对象),但你用的jsonb_array_elements是用来解析单个JSONB对象内部的数组(比如'[{"x":1}]'::jsonb这种格式),两者不是一回事,所以原语句无法正确解析数据,自然查不到结果。
正确的做法是先用unnest()函数把PostgreSQL的jsonb[]数组拆分成独立的JSONB元素,再筛选符合条件的对象:
基础查询(只返回匹配的JSONB对象)
SELECT unnest_element FROM tablename, unnest(jsonb_column) AS unnest_element WHERE unnest_element->>'title' = 'title2';
关联原表字段的查询
如果需要同时返回原表的其他字段,可以这样写:
SELECT t.*, unnest_element FROM tablename t, unnest(t.jsonb_column) AS unnest_element WHERE unnest_element->>'title' = 'title2';
内容的提问来源于stack exchange,提问作者alg
相关产品推荐
相关产品推荐

