1.8 KiB
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'