Função JSON_SET() do MySQL

Resumo : neste tutorial, você aprenderá como usar a JSON_SET()função MySQL para substituir valores existentes ou adicionar valores não existentes a um documento JSON.

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

A JSON_SET()função permite substituir valores existentes ou adicionar valores não existentes a um documento JSON.

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

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

Nesta sintaxe:

  • json_doc: este é o documento JSON que você deseja substituir ou adicionar dados.
  • path: o caminho JSON que especifica as posições onde  json_doc você deseja substituir ou adicionar dados.
  • value: o valor que você deseja substituir ou adicionar.

A JSON_SET()função retorna o documento JSON atualizado. Ele retorna NULLse algum argumento for NULL.

Quando você usa vários pares caminho/valor, a JSON_SET()função os processará um por um, começando da esquerda. Ele usa o documento JSON atualizado da primeira avaliação para a próxima até a última.

Exemplos de funções JSON_SET() do MySQL

Tomaremos alguns exemplos de uso da JSON_SET()função.

1) Substituindo um valor existente

O exemplo a seguir usa a JSON_SET()função para substituir um valor existente por um novo valor em um documento JSON:

SELECT 
  JSON_SET(
    '{"name": "Jane Doe", "age": 22}', 
    '$.name', 
    'Jane Smith'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------------------------------+
| result                            |
+-----------------------------------+
| {"age": 22, "name": "Jane Smith"} |
+-----------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, usamos a JSON_SET()função para substituir o nameobjeto in do documento JSON por um novo.

A expressão path $.nameespecifica a namepropriedade do objeto.

2) Substituindo valores em objetos aninhados

O exemplo a seguir usa a JSON_SET()função para substituir valor em um objeto aninhado:

SELECT 
  JSON_SET(
    '{"person": {"name": "John", "address": {"city": "New York"}}}', 
    '$.person.address.city', 
     'Los Angeles'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------------------------------------------------------------------+
| result                                                           |
+------------------------------------------------------------------+
| {"person": {"name": "John", "address": {"city": "Los Angeles"}}} |
+------------------------------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, usamos a JSON_SET()função para atualizar citydentro do objeto aninhado.

A expressão path $.person.address.cityespecifica a citypropriedade do addressobjeto do personobjeto.

3) Adicionando um valor inexistente

Se você definir um valor em um caminho que não existe no documento JSON, a JSON_SET()função adicionará o elemento. Por exemplo:

SELECT 
  JSON_SET(
    '{"name": "John", "age": 22}', '$.city', 
    'London'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

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

4) Substituindo/adicionando vários pares de caminho/valor

O exemplo a seguir usa a SET()função para atualizar um valor existente e adicionar um novo valor a um documento JSON:

SELECT 
  JSON_SET(
    '{"name": "Jane Doe", "age": 25, "city": "New York"}', 
    '$.name', 'Jane Smith', 
    '$.job', 'MySQL Specialist'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----------------------------------------------------------------------------------+
| result                                                                           |
+----------------------------------------------------------------------------------+
| {"age": 25, "job": "MySQL Specialist", "city": "New York", "name": "Jane Smith"} |
+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo:

  • O caminho $.namelocaliza a propriedade name que existe no documento JSON, portanto, a função substitui o nome atual "Jane Doe"pelo novo "Jane Smith".
  • O caminho $.joblocaliza a jobpropriedade que não existe no documento JSON para que a função insere a nova propriedade jobcom o valor "MySQL Specialist".

Resumo

  • Use a JSON_REPLACE()função MySQL para substituir valores existentes em um documento JSON.

Deixe um comentário

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