i have postgresql 9.5 database table jsonb column called attrs. want check existence of particular key within attires column. think can use ? operator, don't understand syntax.
select * cereal attrs ? 'lbs';
this returns, "the number of minded parameters < number of parameter markers."
select * cereal attrs ? | array['lbs'];
this returns, "the number of minded parameters < number of parameter markers."
how query existence of key in jsonb column?
you spot on first query.
the ?
operator have limitation examines top-level keys of jsonb
value. key looking buried somewhere deeper in json document. can use number of jsonb
operators or processing functions drill down key supposed located , test: ->
, #>
, jsonb_each()
or jsonb_array_elements()
, among others. use of these , run ?
operator on result, like:
select * cereal (attrs -> 'weight') ? 'lbs';
...for json document like:
{"ingredients": {...}, "weight": {"lbs": 4, "kg": 1.8}, ...}
without knowledge of structure of json document won't more specific answer.
Comments
Post a Comment