Função MySQL JSON_MERGE_PRESERVE()

Resumo : neste tutorial, você aprenderá como usar a JSON_MERGE_PRESERVE()função MySQL para mesclar dois ou mais documentos JSON.

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

A JSON_MERGE_PRESERVE()função mescla dois ou mais documentos JSON e retorna um documento JSON mesclado, preservando a estrutura do documento JSON original.

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

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

Nesta sintaxe:

  • json_doc: este é o documento JSON que você deseja mesclar. A função aceita dois ou mais json_docargumentos.

A função retorna um documento JSON mesclado. Ele retorna NULLse algum argumento for NULL.

Se algum argumento não for um documento JSON válido, a função gerará um erro.

A função usa as seguintes regras para mesclar documentos JSON preservando a estrutura do documento JSON original:

  • Matrizes adjacentes são mescladas em uma única matriz.
  • Objetos adjacentes são mesclados em um único objeto.
  • Um valor escalar é automaticamente agrupado como uma matriz e mesclado como uma matriz.
  • Matrizes e objetos adjacentes são mesclados envolvendo automaticamente o objeto como uma matriz e, em seguida, mesclando as duas matrizes.

Para mesclar dois ou mais documentos JSON em um documento JSON enquanto descarta chaves duplicadas, você usa a função JSON_MERGE_PATCH() .

Exemplos de funções JSON_MERGE_PRESERVE() do MySQL

Vejamos alguns exemplos para entender como JSON_MERGE_PRESERVE()funciona.

1) Mesclando arrays em um único array

O exemplo a seguir usa a JSON_MERGE_PRESERVE()função para mesclar dois arrays em um único array:

SELECT 
  JSON_MERGE_PRESERVE('[1, 2]', '[3, 4]') result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------------+
| result       |
+--------------+
| [1, 2, 3, 4] |
+--------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

2) Mesclando objetos em um único objeto

O exemplo a seguir usa a JSON_MERGE_PRESERVE()função para mesclar dois objetos em um único objeto:

SELECT 
  JSON_MERGE_PRESERVE('{"name": "John Doe"}', '{"age": 25}') result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

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

3) Mesclando escalares em um array

O exemplo a seguir usa a JSON_MERGE_PRESERVE()função para mesclar dois valores escalares em uma matriz cujos elementos são os valores escalares:

SELECT 
  JSON_MERGE_PRESERVE('1', 'true') result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+-----------+
| result    |
+-----------+
| [1, true] |
+-----------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

4) Mesclando um array e um objeto em um array

O exemplo a seguir usa a JSON_MERGE_PRESERVE()função para mesclar um array com um objeto e retornar um array que contém o objeto como o último elemento:

SELECT 
  JSON_MERGE_PRESERVE(
    '["Jane", "John"]', '{"name": "Alice"}'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

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

5) Mesclando objetos com as mesmas chaves

O exemplo a seguir usa a JSON_MERGE_PRESERVE()função para mesclar dois objetos com a mesma chave e retornar um objeto com os valores são os arrays contendo os valores de cada objeto.

SELECT 
  JSON_MERGE_PRESERVE(
    '{ "name": "Jane Doe", "age": 24 }', 
    '{ "name": "Jane Smith", "age": 25 }'
  ) result;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

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

Resumo

  • Use a JSON_MERGE_PRESERVE()função para mesclar dois ou mais documentos JSON preservando a estrutura do documento JSON original.

Deixe um comentário

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