@orpha
To access nested properties in a MySQL JSON column, you can use the ->
or ->>
operator along with the key path to navigate through the nested structure.
Here is an example of accessing a nested property in a JSON column:
Suppose you have a table called users
with a column named data
of type JSON. The data
column contains nested JSON data like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "name": "John", "address": { "street": "123 Main St", "city": "New York", "state": "NY" }, "contacts": [ { "name": "Jane", "phone": "123-456-7890" }, { "name": "Bob", "phone": "987-654-3210" } ] } |
To access the nested property street
in the address
, you can use the ->
operator:
1 2 |
SELECT data->"$.address.street" AS street FROM users; |
To access the nested property phone
in the second element of the contacts
array, you can use the ->>
operator:
1 2 |
SELECT data->"$.contacts[1].phone" AS phone FROM users; |
You can also use the ->
or ->>
operators in combination to access multiple nested properties. For example, to access the nested property city
and state
in the address
, you can do:
1 2 3 |
SELECT data->"$.address.city" AS city, data->"$.address.state" AS state FROM users; |
Note that if you are using MySQL 8.0 or higher, you can also use the ->>
operator instead of ->
to directly return the value as a string instead of a JSON object.