Postgresql

查詢索引的 jsonb 列

  • June 4, 2020

我想用@>運算符查詢一個 jsonb 列。

此查詢給出結果:

select * from json_table1
where p_attribute @> '{"age":"37"}'

此查詢不會失敗,但也不會給出結果:

select * from json_table1
where p_attribute -> 'age' @> '37'::jsonb

範例中使用的表:

create table json_table1 (
   p_id int primary key,
   first_name varchar(20),
   last_name varchar(20),
   p_attribute jsonb,
   quote_content text
)

上的索引p_attribute

create index gin_idx on json_table1 using gin(p_attribute jsonb_path_ops)

由於"37"是字元串,而不是數字,因此您的第二個查詢必須使用jsonb字元串:

... WHERE p_attribute -> 'age' @> '"37"'::jsonb

注意 . 周圍的雙引號37

另請注意,此查詢將無法使用索引,而第一個查詢可以。

引用自:https://dba.stackexchange.com/questions/268493