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 ondejson_doc
você 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_doc
caminhos especificados.
A função retorna NULL
se algum argumento for NULL
. Além disso, ele emitirá um erro se json_doc
nã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.