Resumo : neste tutorial, você aprenderá como usar a JSON_ARRAY_INSERT()
função MySQL para inserir elementos em uma posição especificada em um array JSON.
Introdução à função JSON_ARRAY_INSERT() do MySQL
A JSON_ARRAY_INSERT()
função é usada para inserir um ou mais elementos em uma posição especificada em uma matriz JSON de um documento JSON.
Aqui está a sintaxe da JSON_ARRAY_INSERT()
função:
JSON_ARRAY_INSERT(json_doc, path1, value1 [ path2, value2] ...)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
json_doc
: este é o documento JSON que contém a matriz JSON na qual você deseja inserir elementos.path
: o caminho para a matriz no documento JSON.value
: este é o valor que você deseja inserir na matriz JSON.
A JSON_ARRAY_INSERT()
função retorna o documento JSON modificado. Ele retorna NULL
se algum argumento for NULL
.
Se json_doc
não for um documento JSON válido ou o caminho não for uma expressão de caminho válida, a função emitirá um erro.
Se você tiver vários caminhos, a função os avaliará da esquerda para a direita, com cada par baseado no resultado da operação anterior, retornando, em última análise, a matriz JSON atualizada.
Exemplos de funções JSON_ARRAY_INSERT() do MySQL
Vejamos alguns exemplos de uso da JSON_ARRAY_INSERT()
função MySQL.
1) Inserindo elementos em um array JSON
O exemplo a seguir usa a JSON_ARRAY_INSERT()
função para inserir elementos em uma matriz JSON:
SELECT JSON_ARRAY_INSERT('["red","green"]', '$[1]', 'blue');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('["red","green"]', '$[1]', 'blue') |
+------------------------------------------------------+
| ["red", "blue", "green"] |
+------------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, inserimos a string ‘azul’ na segunda posição especificada pelo caminho $[1]
do array JSON '["red", "green"]'
. A função retorna o documento JSON modificado com os elementos atualizados.
2) Inserindo elementos em um array JSON de um documento JSON armazenado em uma tabela
Primeiro, crie uma nova tabela chamada styles
:
CREATE TABLE styles(
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A seguir, insira uma nova linha na styles
tabela:
INSERT INTO styles(data)
VALUES('{ "colors": ["red", "green"], "fonts": ["serif"] }');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, recupere os dados da styles
tabela:
SELECT * FROM styles
WHERE id = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+--------------------------------------------------+
| id | data |
+----+--------------------------------------------------+
| 1 | {"fonts": ["serif"], "colors": ["red", "green"]} |
+----+--------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Depois disso, insira a 'blue'
string na segunda posição do colors
array usando a JSON_ARRAY_INSERT()
função:
UPDATE styles
SET data = JSON_ARRAY_INSERT(data,'$.colors[1]', 'blue')
WHERE id = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta consulta, o caminho '$.colors[1]'
significa:
$
é o documento JSON atual.colors
: é o array no qual você deseja inserir elementos.colors[1]
: especifica a segunda posição na matriz para inserir o novo elemento.
Por fim, recupere os dados da styles
tabela novamente para observar a mudança:
SELECT * FROM styles
WHERE id = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+----------------------------------------------------------+
| id | data |
+----+----------------------------------------------------------+
| 1 | {"fonts": ["serif"], "colors": ["red", "blue", "green"]} |
+----+----------------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
JSON_ARRAY_INSERT()
função para inserir elementos em uma posição especificada em uma matriz JSON em um documento JSON.