Postgresql:如何查询包含某些值的 JSONb 数组
Posted
技术标签:
【中文标题】Postgresql:如何查询包含某些值的 JSONb 数组【英文标题】:Postgresql: How to query for JSONb arrays containing some value(s) 【发布时间】:2016-06-09 16:55:32 【问题描述】:我有这张桌子:
CREATE TABLE lawyer (
id SERIAL PRIMARY KEY,
data jsonb
);
INSERT INTO lawyer (data) VALUES
('"a": 1'),
('"tags":["derecho", "civil", "laboral", "penal"]'),
('"tags":["derecho", "penal"]')
;
我想要的是 postgres 中的 JSONb 查询,用于在我需要查找包含“civil”OR
“derecho”的任何条目的示例时
【问题讨论】:
Postgres JSONB: query values in JSON array的可能重复 【参考方案1】:终于找到了办法:
将 json 数组直接存储为顶层:
INSERT INTO lawyer (data) VALUES
('["derecho","laboral","penal"]'),
('["derecho", "civil", "laboral", "penal"]'),
('["derecho", "penal"]')
;
SELECT *
FROM lawyer
WHERE data ? 'penal';
结果:
【讨论】:
【参考方案2】:对于那些寻找原始数据结构答案的人,这里是 SQL:
SELECT * FROM lawyer WHERE lawyer.data->'tags' ? 'penal'
【讨论】:
以上是关于Postgresql:如何查询包含某些值的 JSONb 数组的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL 查询包含特定键值的 json 对象中的行
如何在mongodb中获取包含某些(字符串)值的集合的所有键