Maison  >  Article  >  base de données  >  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)

黄舟
黄舟original
2017-02-07 13:11:401247parcourir

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"]';


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"]         |
+----------------------------------+

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"]      |
+----------------------------------+

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"]         |
+-------------------------------------+

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} |
+------------------------------------+





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"]} |
+--------------------------------------+

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"]                    |
+---------------------------------+

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"]              |
+---------------------------------+

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]]';

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]]  |

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]]  |
+------------------------------------+




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"]    |
+--------------------------------------+

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]]       |
+-----------------------------------------+

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]]     |
+---------------------------------------+

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]]                      |
+----------------------------------------------------+

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]"}          |
+----------------------------------------------------+

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('[1, 2]', '[true, false]');
+---------------------------------------+
| JSON_MERGE('[1, 2]', '[true, false]') |
+---------------------------------------+
| [1, 2, true, false]                       |
+---------------------------------------+
mysql> SELECT JSON_MERGE('{"name": "x"}', '{"id": 47}');
+-------------------------------------------+
| JSON_MERGE('{"name": "x"}', '{"id": 47}') |
+-------------------------------------------+
| {"id": 47, "name": "x"}                       |
+-------------------------------------------+
mysql> SELECT JSON_MERGE('{"id": "x"}', '{"id": 47}');
+-------------------------------------------+
| JSON_MERGE('{"id": "x"}', '{"id": 47}') |
+-------------------------------------------+
| {"id": ["x",47]}                             |
+-------------------------------------------+
mysql> SELECT JSON_MERGE('1', 'true');
+-------------------------+
| JSON_MERGE('1', 'true') |
+-------------------------+
| [1, true]                  |
+-------------------------+
mysql> SELECT JSON_MERGE('[1, 2]', '{"id": 47}');
+------------------------------------+
| JSON_MERGE('[1, 2]', '{"id": 47}') |
+------------------------------------+
| [1, 2, {"id": 47}]                    |
+------------------------------------+
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 = '["a", ["b", "c"], "d"]';
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"} |
+-------------------------+
Opération JSON_REPLACE

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

mysql> SET @j = '{ "a": 1, "b": [2, 3]}';
mysql> SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]');
+-----------------------------------------------------+
| JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]') |
+-----------------------------------------------------+
| {"a": 10, "b": [2, 3]}                                      
+-----------------------------------------------------+
mysql> SELECT JSON_REPLACE(@j, '$.a', 10, '$.b[1]',99);
+-----------------------------------------------------+
| JSON_REPLACE(@j, '$.a', 10, '$.b[1]',99')           |
+-----------------------------------------------------+
| {"a": 10, "b": [2, 99]}                             |
+-----------------------------------------------------+
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) !


Déclaration:
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