Função MySQL JSON_ARRAY_INSERT()

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 NULLse algum argumento for NULL.

Se json_docnã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 stylestabela:

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 stylestabela:

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 colorsarray 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 stylestabela 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *