Eu quero consultar uma coluna jsonb com o @>
operador.
Esta consulta fornece resultados:
select * from json_table1
where p_attribute @> '{"age":"37"}'
Esta consulta não falha, mas também não fornece resultados:
select * from json_table1
where p_attribute -> 'age' @> '37'::jsonb
A tabela usada no exemplo:
create table json_table1 (
p_id int primary key,
first_name varchar(20),
last_name varchar(20),
p_attribute jsonb,
quote_content text
)
O índice em p_attribute
:
create index gin_idx on json_table1 using gin(p_attribute jsonb_path_ops)
Como
"37"
é uma string, não um número, sua segunda consulta teria que usar umajsonb
string:Observe as aspas duplas ao redor
37
.Observe também que essa consulta não poderá usar o índice, enquanto a primeira consulta pode.