mirror of
https://github.com/jbranchaud/til
synced 2026-01-07 00:58:02 +00:00
Add Extracting Nested JSON Data as a postgres til.
This commit is contained in:
@@ -52,6 +52,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
|||||||
|
|
||||||
### postgres
|
### postgres
|
||||||
|
|
||||||
|
- [Extracting Nested JSON Data](postgres/extracting-nested-json-data.md)
|
||||||
- [Timestamp Functions](postgres/timestamp-functions.md)
|
- [Timestamp Functions](postgres/timestamp-functions.md)
|
||||||
- [Toggling The Pager In PSQL](postgres/toggling-the-pager-in-psql.md)
|
- [Toggling The Pager In PSQL](postgres/toggling-the-pager-in-psql.md)
|
||||||
- [Turning Timing On](postgres/turning-timing-on.md)
|
- [Turning Timing On](postgres/turning-timing-on.md)
|
||||||
|
|||||||
26
postgres/extracting-nested-json-data.md
Normal file
26
postgres/extracting-nested-json-data.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# Extracting Nested JSON Data
|
||||||
|
|
||||||
|
If you are storing nested JSON data in a postgres JSON column, you are
|
||||||
|
likely going to find yourself in a situation where you need to access some
|
||||||
|
of those nested values in your database code. For instance, you may need to
|
||||||
|
get at the license number in this JSON column
|
||||||
|
|
||||||
|
```sql
|
||||||
|
owner
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
{ "name": "Jason Borne", "license": { "number": "T1234F5G6", "state": "MA" } }
|
||||||
|
```
|
||||||
|
|
||||||
|
Unfortunately, the `->` operator isn't going to do the trick. You need the
|
||||||
|
`json_extract_path` function
|
||||||
|
|
||||||
|
```sql
|
||||||
|
> select json_extract_path(owner, 'license', 'number') from some_table;
|
||||||
|
|
||||||
|
json_extract_path
|
||||||
|
-------------------
|
||||||
|
T1234F5G6
|
||||||
|
```
|
||||||
|
|
||||||
|
Read more about [JSON Functions and
|
||||||
|
Operators](http://www.postgresql.org/docs/9.4/static/functions-json.html).
|
||||||
Reference in New Issue
Block a user