cheatsheets/_drafts/postgresql-json.md

1.8 KiB

title category
Postgresql JSON Development
SELECT * FROM users WHERE data->>'name' = 'John'
SELECT data->>'name' AS name FROM users
Operator Example Description Returns
-> data->2 Get array element 2 JSON
-> data->'name' Get object key name JSON
#> data#>'{a,b}' Get keypath a,b (eg, data.a.b) JSON
---- ---- ---- ----
->> data->>2 Get array element 2 text
->> data->>'name' Get object key name text
#> data#>>'{a,b}' Get keypath a,b (eg, data.a.b) text

> returns JSON, >> returns text.

Boolean operators

Operator Example Description
? data ? 'name' Does data have key name?
`? ` `data ?
?& data ?& array['a','b'] Does data have a and b?
@> '{"a":1,"b":2}'::jsonb @> '{"b":2}'::jsonb Does left include right?
<@ '{"a":1}'::jsonb <@ '{"a":1,"b":2}'::jsonb Does right include left?

When ?/?|/?& works on objects, it checks keys; when it works on arrays, it checks for elements.

  • '{"a":1}'::jsonb ? 'a'
  • '["a"]'::jsonb ? 'a'

References