Summary: in this tutorial, you will learn how to use the MySQL JSON_ARRAY_APPEND()
function to add an element to a JSON array within a JSON document.
Introduction to the MySQL JSON_ARRAY_APPEND() function
The JSON_ARRAY_APPEND()
function adds an element to a JSON array in a JSON document.
Here’s the syntax of the JSON_ARRAY_APPEND()
function:
JSON_ARRAY_APPEND(json_doc, path, value1, value2, ...)
Code language: SQL (Structured Query Language) (sql)
In this syntax:
json_doc
: This is the JSON document that contains the array to which you want to append elements.path
: The path to the array within the JSON document.value1, value2, ...
: The values you want to append to the JSON array.
This JSON_ARRAY_APPEND()
function is useful when you want to update JSON data stored in tables.
MySQL JSON_ARRAY_APPEND() function examples
Let’s take some examples of using the JSON_ARRAY_APPEND()
function.
1) Adding elements to a JSON array
The following example uses the JSON_ARRAY_APPEND()
function to add elements to a JSON array:
SELECT JSON_ARRAY_APPEND('["red","green"]', '$', 'blue');
Code language: SQL (Structured Query Language) (sql)
Output:
+---------------------------------------------------+
| JSON_ARRAY_APPEND('["red","green"]', '$', 'blue') |
+---------------------------------------------------+
| ["red", "green", "blue"] |
+---------------------------------------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
In this example, we append the value ‘blue’ to the JSON array ["red", "green"]
that results in the ["red", "green", "blue"]
2) Adding elements to nested a JSON array
The following example uses the JSON_ARRAY_APPEND()
function to add elements to nested JSON arrays:
SELECT
JSON_ARRAY_APPEND(
'{ "colors": ["red", "green"], "fonts": ["serif"] }',
'$.colors', 'blue'
);
Code language: SQL (Structured Query Language) (sql)
Output:
+---------------------------------------------------------+
| json_doc |
+---------------------------------------------------------+
| {"fonts": ["serif"], "colors": ["red", "green", "blue"]}|
+---------------------------------------------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
In this example, the JSON document has two arrays: colors and fonts.
The JSON_ARRAY_APPEND()
function appends the 'blue'
string to the colors array by using the path '$.colors'
.
3) Adding an element to a JSON array in a table
First, create a new table called decorations
:
CREATE TABLE decorations(
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
Code language: SQL (Structured Query Language) (sql)
Next, insert a new JSON document into the decorations
table:
INSERT INTO decorations(data)
VALUES('{ "colors": ["red", "green"], "fonts": ["serif"] }');
Code language: SQL (Structured Query Language) (sql)
Then, query data from the decorations
table:
SELECT * FROM decorations
WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)
Output:
+----+--------------------------------------------------+
| id | data |
+----+--------------------------------------------------+
| 1 | {"fonts": ["serif"], "colors": ["red", "green"]} |
+----+--------------------------------------------------+
1 row in set (0.01 sec)
Code language: plaintext (plaintext)
After that, add an element ('georgia'
) to the fonts array using the JSON_ARRAY_APPEND()
function:
UPDATE decorations
SET data = JSON_ARRAY_APPEND(data, '$.fonts', 'georgia')
WHERE id = 1
Code language: SQL (Structured Query Language) (sql)
Finally, query data from the decorations
table:
SELECT * FROM decorations
WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)
Output:
+----+-------------------------------------------------------------+
| id | data |
+----+-------------------------------------------------------------+
| 1 | {"fonts": ["serif", "georgia"], "colors": ["red", "green"]} |
+----+-------------------------------------------------------------+
1 row in set (0.00 sec)
Code language: plaintext (plaintext)
Summary
- Use the MySQL
JSON_ARRAY_APPEND()
function to append an element to a JSON array within a JSON document.