Heim > Datenbank > MySQL-Tutorial > Hauptteil

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (mittel)

黄舟
Freigeben: 2017-02-07 13:11:40
Original
1256 Leute haben es durchsucht

Erster Titel

1. Anhängen der Array-Klasse JSON_ARRAY_APPEND

Diese Verwendung dient hauptsächlich der Verarbeitung der Wertarray-Typdaten im JSON-Feld, hauptsächlich dem Anhängen des Werts, der kein Wert ist Standard-Array-Typ. Diese Funktion wird automatisch in eine Array-Form konvertiert, wobei der vorherige Wert als erstes Element des Arrays verwendet und dann angehängt wird. Es gibt eine Batch-Anhängemethode:

mysql> SET @j = '["a", ["b", "c"], "d"]';
Nach dem Login kopieren


The Array des zweiten Werts im Feld Ein Element 1 anhängen in:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1]', 1) |
+----------------------------------+
| ["a", ["b", "c", 1], "d"]         |
+----------------------------------+
Nach dem Login kopieren

Ein Element 2 an das Array des ersten Werts im Feld anhängen, wenn es sich nicht um einen einzelnen Wert im Feld handelt Form eines Arrays, wird es in ein Array geändert und angehängt:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[0]', 2) |
+----------------------------------+
| [["a", 2], ["b", "c"], "d"]      |
+----------------------------------+
Nach dem Login kopieren

Hängt ein Element 3 an das erste Array des zweiten Werts im Feld an in Form eines Arrays wird es in ein Array umgewandelt und angehängt:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3);
+-------------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1][0]', 3) |
+-------------------------------------+
| ["a", [["b", 3], "c"], "d"]         |
+-------------------------------------+
Nach dem Login kopieren

Fügen Sie ein Element „x“ an das Wertearray mit dem Schlüssel „b“ im Feld an:

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} |
+------------------------------------+
Nach dem Login kopieren





im Feld Hängen Sie ein Element „y“ an das Wertearray mit dem Schlüssel „c“ an:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y');
+--------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.c', 'y')    |
+--------------------------------------+
| {"a": 1, "b": [2, 3], "c": [4, "y"]} |
+--------------------------------------+
Nach dem Login kopieren

Wenn das JSON-Feld ein Standard-JSON-Typ ist, wird es durch die Verwendung dieser Funktion in die Array-Form geändert und Wert angehängt:

mysql> SET @j = '{"a": 1}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z"]                    |
+---------------------------------+
Nach dem Login kopieren

Wenn das JSON-Feld ein Standard-JSON-Typ ist, Batch-Anhang:

mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z','$', 'w');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z", "w"]              |
+---------------------------------+
Nach dem Login kopieren

2. Einfügen der Array-Klasse JSON_ARRAY_INSERT

Diese Verwendung dient hauptsächlich der Verarbeitung der Wert-Array-Typdaten im JSON-Feld, hauptsächlich zum Einfügen Kein Standard-Array-Typ. Diese Funktion konvertiert es automatisch in eine Array-Form, und der vorherige Wert wird als erstes Element des Arrays verwendet und dann angehängt:

mysql> SET @j = '["a", {"b": [1, 2]}, [3, 4]]';
Nach dem Login kopieren

Fügen Sie das Zeichen „x“ ein. Element nach dem ersten Wert des Arrays:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["a", "x", {"b": [1, 2]}, [3, 4]]  |
Nach dem Login kopieren

Fügen Sie das Zeichen „x“-Element vor dem ersten Wert des Arrays ein:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[0]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[1]', 'x') |
+------------------------------------+
| ["x","a", {"b": [1, 2]}, [3, 4]]  |
+------------------------------------+
Nach dem Login kopieren




Fügen Sie das Zeichenelement „x“ nach dem 100. Wert im Array ein. Wenn es zu lang ist, fügen Sie es nach dem letzten Wert ein:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[100]', 'x');
+--------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[100]', 'x') |
+--------------------------------------+
| ["a", {"b": [1, 2]}, [3, 4], "x"]    |
+--------------------------------------+
Nach dem Login kopieren

Im ersten Geben Sie als Wert des Arrays das Zeichenelement „x“ vor dem ersten Wert des Wertearrays mit der Taste „b“ ein:

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]]       |
+-----------------------------------------+
Nach dem Login kopieren

Im ersten Wert des Arrays geben Sie das Zeichenelement „ y' nach dem ersten Wert des Arrays nach den 2 Werten:

mysql> SELECT JSON_ARRAY_INSERT(@j, '$[2][1]', 'y');
+---------------------------------------+
| JSON_ARRAY_INSERT(@j, '$[2][1]', 'y') |
+---------------------------------------+
| ["a", {"b": [1, 2]}, [3, "y", 4]]     |
+---------------------------------------+
Nach dem Login kopieren

Batch-Einfügung von Array-Elementen:

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]]                      |
+----------------------------------------------------+
Nach dem Login kopieren

3 JSON-Werte

Wenn der Schlüssel bereits vorhanden ist, wird der alte Wert nicht überschrieben:

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]"}          |
+----------------------------------------------------+
Nach dem Login kopieren

4. JSON_MERGE-Zusammenführungsvorgang

JSON_MERGE wird hauptsächlich zum Zusammenführen verwendet: Wenn es sich bei den beiden um Arrays handelt, werden sie zu einem Array zusammengeführt. Wenn es sich bei den beiden um JSON handelt, werden sie zu einem JSON zusammengeführt. Wenn die beiden JSONs denselben Schlüssel haben, wird der Wert zu einem Array zusammengeführt ; wenn zwei einzelne Werte zu einem Array zusammengeführt werden; wenn es sich um ein Array handelt und einer davon JSON ist, werden sie zu einem Array zusammengeführt:

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}]                    |
+------------------------------------+
Nach dem Login kopieren

JSON_REMOVE-Löschvorgang

JSON_REMOVE-Löschvorgang. Dies ist relativ einfach. Löschen Sie einen bestimmten Wert im Feld. Er kann im Array- oder JSON-Format vorliegen:

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"} |
+-------------------------+
Nach dem Login kopieren

6. JSON_REPLACE-Ersetzungsvorgang Gibt es welche, ersetzen Sie sie, falls nicht. Ignorieren.

7. Die JSON_SET-Operation ist eine Aktualisierungs- und Einfügeoperation. Wenn sie bereits vorhanden ist, fügen Sie sie ein in den Ausführungsergebnissen von JSON_SET, JSON_INSERT und JSON_REPLACE:
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]}                             |
+-----------------------------------------------------+
Nach dem Login kopieren

Das Obige ist der Inhalt der neuen Funktionen von MySQL 5.7 | Inhalt, achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!

Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (mittel)

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage