Resumo : neste tutorial, você aprenderá como usar a JSON_REPLACE()
função MySQL para substituir valores existentes em um documento JSON e retornar o documento atualizado.
Introdução à função JSON_REPLACE() do MySQL
A JSON_REPLACE()
função substitui os valores existentes em um documento JSON e retorna o documento atualizado.
Aqui está a sintaxe da JSON_REPLACE()
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 cujos dados você deseja substituir.path
: o caminho JSON que especifica as posições ondejson_doc
você deseja atualizar o novo valor.value
: o valor que você deseja atualizar.
A JSON_REPLACE()
função retorna o documento JSON atualizado. Ele retorna NULL
se algum argumento for NULL
.
Se você tiver vários pares caminho/valor, a função irá processá-los um por um, começando da esquerda. Ele usa o resultado da primeira avaliação para o próximo par caminho/valor.
A função apenas substitui o valor do documento existente por um novo valor para um caminho existente no documento. Se o caminho não existir, a função não terá efeito.
Exemplos de funções JSON_REPLACE() do MySQL
Vejamos alguns exemplos de uso da JSON_REPLACE()
função.
1) Substituindo um valor existente
O exemplo a seguir usa a JSON_REPLACE()
função para substituir um valor existente por um novo valor em um documento JSON:
SELECT
JSON_REPLACE(
'{"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 )
2) Atualizando objetos aninhados
O exemplo a seguir usa a JSON_REPLACE()
função para atualizar valores em objetos aninhados:
SELECT
JSON_REPLACE(
'{"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_REPLACE()
função para atualizar a cidade dentro do objeto aninhado.
3) Exemplo de tratamento de caminho inexistente
Se você tentar substituir um valor em um caminho que não existe no documento JSON, a JSON_REPLACE()
função simplesmente deixará o documento inalterado. Por exemplo:
SELECT
JSON_REPLACE(
'{"name": "John", "age": 22}', '$.city',
'London'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------------------------+
| result |
+-----------------------------+
| {"age": 22, "name": "John"} |
+-----------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
4) Substituindo por vários pares de caminho/valor
O exemplo a seguir usa a JSON_REPLACE()
função para atualizar o nome e uma cidade em uma única operação:
SELECT
JSON_REPLACE(
'{"name": "Jane Doe", "age": 25, "city": "New York"}',
'$.name', 'Jane Smith', '$.age', 26, '$.city',
'Los Angeles'
) result;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------------------------------------------+
| result |
+----------------------------------------------------------+
| {"age": 26, "city": "Los Angeles", "name": "Jane Smith"} |
+----------------------------------------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, a JSON_REPLACE()
função substitui primeiro o nome e usa o documento atualizado para substituir a idade e usa o documento modificado para substituir a cidade.
Resumo
- Use a
JSON_REPLACE()
função MySQL para substituir valores existentes em um documento JSON.