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 ondejson_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 NULL
se 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 name
objeto in do documento JSON por um novo.
A expressão path $.name
especifica a name
propriedade 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 city
dentro do objeto aninhado.
A expressão path $.person.address.city
especifica a city
propriedade do address
objeto do person
objeto.
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
$.name
localiza a propriedade name que existe no documento JSON, portanto, a função substitui o nome atual"Jane Doe"
pelo novo"Jane Smith"
. - O caminho
$.job
localiza ajob
propriedade que não existe no documento JSON para que a função insere a nova propriedadejob
com o valor"MySQL Specialist"
.
Resumo
- Use a
JSON_REPLACE()
função MySQL para substituir valores existentes em um documento JSON.