【问题标题】:Postgresql: How to query for JSONb arrays containing some value(s)Postgresql:如何查询包含某些值的 JSONb 数组
【发布时间】: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”的任何条目的示例时

【问题讨论】:

标签: postgresql postgresql-9.1 postgresql-9.3 postgresql-9.2 jsonb


【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2016-12-05
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多