Heim >Datenbank >MySQL-Tutorial >Neue Funktionen von MySQL 5.7 |. Json-Spalte und generierte Spalte (mittel)

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

黄舟
黄舟Original
2017-02-07 13:11:401284Durchsuche

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


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

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

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

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





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

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

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

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

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

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




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

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

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

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

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

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

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

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

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)

Stellungnahme:
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