我想用@>
运算符查询一个 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
字符串:注意 . 周围的双引号
37
。另请注意,此查询将无法使用索引,而第一个查询可以。