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'