Postgresql
查詢索引的 jsonb 列
我想用
@>
運算符查詢一個 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
。另請注意,此查詢將無法使用索引,而第一個查詢可以。