Postgresql
在 postgreSQL 13 中我應該怎麼做 q jsonb 查詢
我在 PostgreSQL 13 中儲存了 jsonb 數據,如下所示:
[{"code": "OFFICIAL"}, {"code": "FULLTEXT"}]
如何查詢jsonb數據類型?我試過這樣:
select count(*) from test where tags::jsonb ? 'code'; select count(*) from test where tags::jsonb ->> 'code' = 'OFFICIAL'; select count(*) from test where tags::jsonb @> '{"code": "OFFICIAL"}';
兩者都無法工作。這是表 DDL:
CREATE TABLE public.test ( id int8 NOT NULL GENERATED ALWAYS AS IDENTITY, tags jsonb NULL, CONSTRAINT test_pkey PRIMARY KEY (id) );
我應該怎麼做才能讓它工作?也試過這樣:
select * from ( select jsonb_array_elements(tags) as tt from test ) a where tt -> 'code' = 'OFFICIAL'
它是一個對像數組,因此您需要為
@>
運算符提供一個數組:select count(*) from test where tags @> '[{"code": "OFFICIAL"}]'
或者您可以使用 JSON 路徑表達式:
select count(*) from test where tags @@ '$[*].code == "OFFICIAL"'