How to Query JSON Objects in MySQL


We can search JSON objects in our MySQL tables using either JSON_EXTRACT() or the arrow operator -> to parse the JSON string.

Suppose we have a table products with columns id and json_data.

id json_data
0 {"num": 1}
1 {"num": 2}
2 {"num": 3}

1. Using JSON_EXTRACT()

If we have MySQL version >= 5.7, we can use JSON_EXTRACT to target a certain field in our JSON string.

SELECT JSON_EXTRACT(json_data, "$.num") FROM products

We can also append a WHERE clause to this statement that depends on a JSON value.

SELECT JSON_EXTRACT(json_data, "$.num") FROM products
WHERE JSON_EXTRACT(json_data, "$.num") < 2

2. Using the arrow operator ->

In version 5.7.9, the -> operator became an alias for JSON_EXTRACT().

SELECT json_data->"$.num" FROM products

Similarly, we can use the arrow operator in our WHERE clauses.

SELECT json_data->"$.num" FROM products
WHERE json_data->"$.num" < 2