Maison > base de données > tutoriel mysql > Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (moyen)

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (moyen)

黄舟
Libérer: 2017-02-07 13:11:40
original
1286 Les gens l'ont consulté

Premier titre

1. Ajout de la classe de tableau JSON_ARRAY_APPEND

Cette utilisation consiste principalement à traiter les données de type tableau de valeurs dans le champ JSON, principalement pour ajouter la valeur, qui n'est pas une valeur. type de tableau standard. Cette fonction sera automatiquement convertie en forme de tableau, en utilisant la valeur précédente comme premier élément du tableau, puis en l'ajoutant. Il existe une méthode d'ajout par lots :

mysql> SET @j = '["a", ["b", "c"], "d"]';
Copier après la connexion


Le. tableau de la deuxième valeur du champ Ajouter un élément 1 dans :

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1]', 1) |
+----------------------------------+
| ["a", ["b", "c", 1], "d"]         |
+----------------------------------+
Copier après la connexion

Ajouter un élément 2 au tableau de la première valeur du champ S'il ne s'agit pas d'une seule valeur dans le champ. forme d'un tableau, il sera changé en tableau et ajouté :

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[0]', 2) |
+----------------------------------+
| [["a", 2], ["b", "c"], "d"]      |
+----------------------------------+
Copier après la connexion

Ajoute un élément 3 au premier tableau de la deuxième valeur du champ S'il ne s'agit pas d'une valeur unique. sous forme de tableau, il sera transformé en tableau et ajouté :

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3);
+-------------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1][0]', 3) |
+-------------------------------------+
| ["a", [["b", 3], "c"], "d"]         |
+-------------------------------------+
Copier après la connexion

Ajouter un élément "x" au tableau de valeurs avec la clé "b" dans le champ :

mysql> SET @j = '{"a": 1, "b": [2, 3], "c": 4}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$.b', 'x');
+------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.b', 'x')  |
+------------------------------------+
| {"a": 1, "b": [2, 3, "x"], "c": 4} |
+------------------------------------+
Copier après la connexion





dans le champ Ajouter un élément "y" au tableau de valeurs avec la clé "c":

mysql> SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y');
+--------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.c', 'y')    |
+--------------------------------------+
| {"a": 1, "b": [2, 3], "c": [4, "y"]} |
+--------------------------------------+
Copier après la connexion

Si le champ JSON est un type JSON standard, l'utilisation de cette fonction le transformera en forme de tableau et ajoutera une valeur :

mysql> SET @j = '{"a": 1}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z"]                    |
+---------------------------------+
Copier après la connexion

Si le champ JSON est un type JSON standard, batch append :

mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z','$', 'w');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z", "w"]              |
+---------------------------------+
Copier après la connexion

2. Insertion de la classe de tableau JSON_ARRAY_INSERT

Cette utilisation sert principalement à traiter les données de type tableau de valeurs dans le champ JSON, principalement pour l'insertion, ce qui est pas un type de tableau standard. Cette fonction le convertira automatiquement en forme de tableau, et la valeur précédente sera utilisée comme premier élément du tableau puis ajoutée :

mysql> SET @j = '["a", {"b": [1, 2]}, [3, 4]]';
Copier après la connexion

Insérez le caractère 'x'. élément après la première valeur du tableau :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["a", "x", {"b": [1, 2]}, [3, 4]]  |
Copier après la connexion

Insérez le caractère 'x' élément avant la première valeur du tableau :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["x","a", {"b": [1, 2]}, [3, 4]]  |
+------------------------------------+
Copier après la connexion




Insérez l'élément de caractère 'x' après la 100ème valeur du tableau. S'il est trop long, insérez-le après la dernière valeur :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[100]', 'x');
+--------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[100]', 'x') |
+--------------------------------------+
| ["a", {"b": [1, 2]}, [3, 4], "x"]    |
+--------------------------------------+
Copier après la connexion

Dans la première. valeur du tableau, saisissez l'élément de caractère 'x' avant la première valeur du tableau de valeurs avec la clé 'b' :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x');
+-----------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1].b[0]', 'x') |
+-----------------------------------------+
| ["a", {"b": ["x", 1, 2]}, [3, 4]]       |
+-----------------------------------------+
Copier après la connexion

Dans la première valeur du tableau Saisissez l'élément de caractère ' y' après la première valeur du tableau après les 2 valeurs :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[2][1]', 'y');
+---------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[2][1]', 'y') |
+---------------------------------------+
| ["a", {"b": [1, 2]}, [3, "y", 4]]     |
+---------------------------------------+
Copier après la connexion

Insertion par lots d'éléments du tableau :

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y');
+----------------------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[0]', 'x', '$[2][1]', 'y') |
+----------------------------------------------------+
| ["x", "a", {"b": [1, 2]}, [3, 4]]                      |
+----------------------------------------------------+
Copier après la connexion

3. Valeurs JSON

Si la clé existe déjà, l'ancienne valeur ne sera pas écrasée Insertion de valeurs inexistantes :

mysql> SET @j = '{ "a": 1, "b": [2, 3]}';
mysql> SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]');
+----------------------------------------------------+
| JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]') |
+----------------------------------------------------+
| {"a": 1, "b": [2, 3], "c": "[true, false]"}          |
+----------------------------------------------------+
Copier après la connexion

Opération de fusion JSON_MERGE

<🎜. > JSON_MERGE est principalement utilisé pour la fusion : si les deux sont des tableaux, ils sont fusionnés en un seul tableau ; si les deux sont JSON, ils sont fusionnés en un seul JSON. Si les deux JSON ont la même clé, la valeur est fusionnée en un tableau. ; si Deux valeurs uniques sont fusionnées en un seul tableau ; s'il s'agit d'un tableau et que l'une est JSON, elles sont fusionnées en un seul tableau :

mysql> SELECT JSON_MERGE(&#39;[1, 2]&#39;, &#39;[true, false]&#39;);
+---------------------------------------+
| JSON_MERGE(&#39;[1, 2]&#39;, &#39;[true, false]&#39;) |
+---------------------------------------+
| [1, 2, true, false]                       |
+---------------------------------------+
mysql> SELECT JSON_MERGE(&#39;{"name": "x"}&#39;, &#39;{"id": 47}&#39;);
+-------------------------------------------+
| JSON_MERGE(&#39;{"name": "x"}&#39;, &#39;{"id": 47}&#39;) |
+-------------------------------------------+
| {"id": 47, "name": "x"}                       |
+-------------------------------------------+
mysql> SELECT JSON_MERGE(&#39;{"id": "x"}&#39;, &#39;{"id": 47}&#39;);
+-------------------------------------------+
| JSON_MERGE(&#39;{"id": "x"}&#39;, &#39;{"id": 47}&#39;) |
+-------------------------------------------+
| {"id": ["x",47]}                             |
+-------------------------------------------+
mysql> SELECT JSON_MERGE(&#39;1&#39;, &#39;true&#39;);
+-------------------------+
| JSON_MERGE(&#39;1&#39;, &#39;true&#39;) |
+-------------------------+
| [1, true]                  |
+-------------------------+
mysql> SELECT JSON_MERGE(&#39;[1, 2]&#39;, &#39;{"id": 47}&#39;);
+------------------------------------+
| JSON_MERGE(&#39;[1, 2]&#39;, &#39;{"id": 47}&#39;) |
+------------------------------------+
| [1, 2, {"id": 47}]                    |
+------------------------------------+
Copier après la connexion
Opération de suppression JSON_REMOVE

. Opération de suppression JSON_REMOVE, c'est relativement simple, supprimez une certaine valeur dans le champ, elle peut être au format tableau ou JSON :

mysql> SET @j = &#39;["a", ["b", "c"], "d"]&#39;;
mysql> SELECT JSON_REMOVE(@j, '$[1]');
+-------------------------+
| JSON_REMOVE(@j, '$[1]') |
+-------------------------+
| ["a", "d"]                 |
+-------------------------+
 
 
 
 
mysql> SET @j = '{"name": "x","id": 47}';
mysql> SELECT JSON_REMOVE(@j, '$.id');
+-------------------------+
| JSON_REMOVE(@j, '$.id') |
+-------------------------+
| {"name": "x"}              |
+-------------------------+
mysql> SELECT JSON_REMOVE(@j, '$.id', '$.name');
+-----------------------------------+
| JSON_REMOVE(@j, '$.id', '$.name') |
+-----------------------------------+
| {}                                       |
+-----------------------------------+
mysql> SET @j = '{"name": "x","id": [47,48]}';
mysql> SELECT JSON_REMOVE(@j, '$.id[1]');
+-------------------------+
| JSON_REMOVE(@j, '$.id') |
+-------------------------+
| {"id": [47],"name": "x"} |
+-------------------------+
Copier après la connexion
Opération JSON_REPLACE

Opération de remplacement JSON_REPLACE, si. il y en a, remplacez-le, sinon, ignoré.

mysql> SET @j = &#39;{ "a": 1, "b": [2, 3]}&#39;;
mysql> SELECT JSON_REPLACE(@j, &#39;$.a&#39;, 10, &#39;$.c&#39;, &#39;[true, false]&#39;);
+-----------------------------------------------------+
| JSON_REPLACE(@j, &#39;$.a&#39;, 10, &#39;$.c&#39;, &#39;[true, false]&#39;) |
+-----------------------------------------------------+
| {"a": 10, "b": [2, 3]}                                      
+-----------------------------------------------------+
mysql> SELECT JSON_REPLACE(@j, &#39;$.a&#39;, 10, &#39;$.b[1]&#39;,99);
+-----------------------------------------------------+
| JSON_REPLACE(@j, &#39;$.a&#39;, 10, &#39;$.b[1]&#39;,99&#39;)           |
+-----------------------------------------------------+
| {"a": 10, "b": [2, 99]}                             |
+-----------------------------------------------------+
Copier après la connexion
7. Opération JSON_SET

L'opération JSON_SET est une opération de mise à jour et d'insertion Si elle existe déjà, mettez-la à jour ; si elle n'existe pas, insérez-la. dans les résultats d'exécution de JSON_SET, JSON_INSERT et JSON_REPLACE :

Nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (moyen)

Ce qui précède est le contenu des nouvelles fonctionnalités de MySQL 5.7 | Colonne Json et colonne générée (au milieu). contenu, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal