1

我有這個表:PostgreSQL的:如何查詢包含一些值(S)JSONb陣列

enter image description here

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查詢時,我需要找到杉例如,它包含的任何條目「民間」 OR「derecho」

+0

[Postgres的可能的重複JSONB:在JSON數組中查詢值](http://stackoverflow.com/questions/32357971/postgres-jsonb-query-values-in-json-array) – bjmc

回答

2

終於找到一個辦法做到這一點:

商店JSON數組可怕ctly爲頂層:

INSERT INTO lawyer (data) VALUES 
    ('["derecho","laboral","penal"]'), 
    ('["derecho", "civil", "laboral", "penal"]'), 
    ('["derecho", "penal"]') 
; 

SELECT * 
FROM lawyer 
WHERE data ? 'penal'; 

結果:

enter image description here

2

對於那些尋找原始數據結構的答案,這裏的SQL:

SELECT * FROM lawyer WHERE lawyer.data->'tags' ? 'penal'