JSON_MERGE_PRESERVE() în MySQL

JSON: modificare MySQL 8.0.3+ (5.7.22+)

Unește documente JSON păstrând toate valorile: cheile duplicate devin liste.

Sintaxă
JSON_MERGE_PRESERVE(document1, document2[, ...])
JSON_MERGE(document1, document2[, ...])

Ce face JSON_MERGE_PRESERVE()

JSON_MERGE_PRESERVE() nu pierde nimic: când aceeași cheie apare în ambele documente, valorile sunt puse împreună într-o listă, iar listele sunt concatenate.

JSON_MERGE() este numele vechi al aceleiași funcții. Este depreciat și afișează un avertisment; folosește numele nou.

Parametri

Parametru Descriere
document1, document2, ... Documentele unite.

Ce returnează

Documentul unit.

Exemple

Exemplul 1: Chei duplicate și liste

SELECT JSON_MERGE_PRESERVE('{"a": 1, "b": 2}', '{"b": 3}') AS obiecte,
       JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]') AS liste;

Rezultat

+-----------------------+--------------+
| obiecte               | liste        |
+-----------------------+--------------+
| {"a": 1, "b": [2, 3]} | [1, 2, 2, 3] |
+-----------------------+--------------+

Exemplul 2: Numele vechi, depreciat

SELECT JSON_MERGE('[1]', '[2]') AS vechi;

Rezultat

+--------+
| vechi  |
+--------+
| [1, 2] |
+--------+
Warning (Code 1287): 'JSON_MERGE' is deprecated and will be removed in a future release. Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead

Greșeli frecvente

  • Folosești JSON_MERGE_PRESERVE() pentru setări și te trezești cu "tema": ["light", "dark"]. Pentru suprascriere folosește JSON_MERGE_PATCH().

Comenzi înrudite

  • JSON_MERGE_PATCH(): Unește documente JSON după RFC 7396: valorile din documentul următor le înlocuiesc pe cele vechi.
  • JSON_ARRAY_APPEND(): Adaugă o valoare la sfârșitul unei liste JSON.