Função JSON_INSERT() do MySQL

Resumo : neste tutorial, você aprenderá como usar a JSON_INSERT()função MySQL para inserir novos elementos em um documento JSON.

Introdução à função JSON_INSERT() do MySQL

A JSON_INSERT()função permite adicionar um ou mais elementos a um documento JSON.

Aqui está a sintaxe da JSON_INSERT()função:

JSON_INSERT(json_doc, path, value[, path, value] ...)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • json_doc: este é o documento JSON no qual você deseja inserir dados.
  • path: o caminho JSON que especifica a posição onde json_docvocê deseja inserir o novo valor.
  • value: O valor que você deseja inserir.

Observe que você pode inserir vários valores nas posições especificadas pelos caminhos em uma única chamada de função.

A JSON_INSERT()função processa o par caminho/valor um por um, começando pela esquerda. Ele avalia o primeiro par e usa o documento JSON atualizado para avaliar o próximo par até o último par.

Se o caminho existir no documento JSON, a função ignora e não substitui o valor atual no documento JSON.

Se o caminho não existir no documento JSON, a JSON_INSERT()função irá:

  • Adicione a chave/valor a um objeto se o membro não estiver presente em um objeto existente.
  • Estenda uma matriz com um novo valor se o caminho especificar um elemento após o último elemento de uma matriz existente. Se o valor existente não for um array, a função o agrupa como um array e então o estende com um novo valor.

Caso contrário, a função também irá ignorar o caminho inexistente no documento.

A JSON_INSERT()função retorna o novo documento com os valores inseridos nos json_doccaminhos especificados.

A função retorna NULLse algum argumento for NULL. Além disso, ele emitirá um erro se json_docnão for um documento JSON válido ou se o caminho não for uma expressão de caminho válida, ou se um dos caminhos contiver um curinga asterisco (*) ou asterisco duplo (**).

Exemplos de funções JSON_INSERT() do MySQL

Vejamos alguns exemplos de uso da JSON_INSERT()função.

1) Inserindo um novo valor em um objeto existente

O exemplo a seguir usa a JSON_INSERT()função para inserir um novo par chave/valor em um objeto em um documento JSON:

SELECT 
  JSON_INSERT(
    '{"name": "John", "age": 30}', '$.job', 
    'MySQL Expert'
  ) AS updated_json;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----------------------------------------------------+
| updated_json                                       |
+----------------------------------------------------+
| {"age": 30, "job": "MySQL Expert", "name": "John"} |
+----------------------------------------------------+
1 row in set (0.02 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, inserimos a chave “job” com o valor “MySQL Expert” em um objeto existente do documento JSON.

2) Inserindo em objetos aninhados

O exemplo a seguir usa a JSON_INSERT()função para inserir valores em objetos aninhados em um documento JSON:


SELECT 
  JSON_INSERT(
    '{"person": {"name": "Alice", "address": {"city": "Los Angeles"}}}', 
    '$.person.address.zip', '90001'
  ) AS updated_json;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, temos um objeto com a pessoa-chave e um objeto aninhado com o endereço-chave.

Usamos a JSON_INSERT()função para inserir a chave zip com o valor 90001 no objeto de endereço.

3) Inserindo em arrays

O exemplo a seguir usa a JSON_INSERT()função para adicionar um valor a uma matriz JSON:

SELECT 
  JSON_INSERT(
    '{"skills":["MySQL","PHP","JavaScript"]}', 
    '$.skills[3]', 
     'React'
  ) AS updated_json;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------------------------------------------------+
| updated_json                                        |
+-----------------------------------------------------+
| {"skills": ["MySQL", "PHP", "JavaScript", "React"]} |
+-----------------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A razão pela qual podemos adicionar um valor é porque o caminho $.skills[3] não existe no documento.

Se você especificar um caminho que existe no documento, a JSON_INSERT()função o ignorará assim:

SELECT 
  JSON_INSERT(
    '{"skills":["MySQL","PHP","JavaScript"]}', 
    '$.skills[1]', 
     'React'
  ) AS result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------------------------------------------+
| result                                     |
+--------------------------------------------+
| {"skills": ["MySQL", "PHP", "JavaScript"]} |
+--------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O documento JSON não muda.

4) Inserindo vários valores

O exemplo a seguir usa a JSON_INSERT()função para inserir dois novos valores em um objeto JSON existente:

SELECT 
  JSON_INSERT(
    '{"name": "John", "age": 25}', '$.city', 
    'San Jose', '$.country', 'USA'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-------------------------------------------------------------------+
| result                                                            |
+-------------------------------------------------------------------+
| {"age": 25, "city": "San Jose", "name": "John", "country": "USA"} |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Resumo

  • Use a JSON_INSERT()função para inserir um ou mais valores em um documento JSON especificado em caminhos especificados.

Deixe um comentário

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