MySQL JSON_EXTRACT() Function
In MySQL, the JSON_EXTRACT() function extracts the data specified by the path expression in the JSON document and returns it.
JSON_EXTRACT() Syntax
Here is the syntax of the MySQL JSON_EXTRACT() function:
JSON_EXTRACT(json, path, ...)
Parameters
json- Required. A JSON document.
path- Required. You should specify at least one path expression.
Return value
The JSON_EXTRACT() function returns all values in the JSON document matched by the path expression. If the path expression matches a value, return the value, and if the path expression matches more than one value, return an array containing all the values.
The JSON_EXTRACT() function will return NULL in the following cases:
- If the specified path does not exist in the JSON document.
- If any parameter is
NULL.
There will happen an error in the following cases:
- MySQL will give an error if the parameter
jsonis not a valid JSON document. You can useJSON_VALID()to verify the JSON document. - If the parameter
pathis not a valid path expression, MySQL will give an error.
JSON_EXTRACT() Examples
Here are some examples of JSON_EXTRACT().
Example: Array
The following statement shows how to extract an element from an array:
SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2]');
+------------------------------------------+
| JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2]') |
+------------------------------------------+
| {"x": 3} |
+------------------------------------------+Let’s see another example of JSON_EXTRACT() with multiple path parameters:
SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]');
+------------------------------------------------------------+
| JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]') |
+------------------------------------------------------------+
| [3, 2, 1] |
+------------------------------------------------------------+Here, JSON_EXTRACT() returned an array containing all matched data.
Example: Object
The following statement shows how to extract data from an object:
SELECT JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.y');
+----------------------------------------------+
| JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.y') |
+----------------------------------------------+
| [1, 2] |
+----------------------------------------------+Let’s see another example of JSON_EXTRACT() with multiple path parameters. The following example extracts the data of the member x and y in an object and returns the matched values as an array.
SELECT JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.x', '$.y');
+-----------------------------------------------------+
| JSON_EXTRACT('{"x": 1, "y": [1, 2]}', '$.x', '$.y') |
+-----------------------------------------------------+
| [1, [1, 2]] |
+-----------------------------------------------------+