So bedienen Sie JSON-Felder in MySQL

So bedienen Sie JSON-Felder in MySQL

MySQL 5.7.8 führte das JSON-Feld ein. Dieser Feldtyp wird weniger häufig verwendet, aber im tatsächlichen Betrieb wird er von einigen Unternehmen immer noch verwendet. Nehmen wir dies als Beispiel, um die Bedienung des JSON-Felds vorzustellen:

Beginnen wir mit einem Beispiel:

mysql> Tabelle erstellen test1(id int,info json);
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

mysql> in Test1-Werte einfügen (1, ‚{"name":"yeyz","age":26}‘), (2, ‚{"name":"zhangsan","age":30}‘), (3, ‚{"name":"lisi","age":35}‘);
Abfrage OK, 3 Zeilen betroffen (0,02 Sek.)
Datensätze: 3 Duplikate: 0 Warnungen: 0

mysql> wähle * aus test1;
+------+---------------------------------+
| Ich würde | Info |
+------+---------------------------------+
| 1 | {"Alter": 26, "Name": "yeyz"} |
| 2 | {"Alter": 30, "Name": "zhangsan"} |
| 3 | {"Alter": 35, "Name": "lisi"} |
+------+---------------------------------+
3 Zeilen im Satz (0,00 Sek.)

Zuerst haben wir eine Tabelle test1 erstellt, wobei id ein int-Feld und info ein json-Feld ist, und drei Datenstücke eingefügt, wie oben gezeigt:

mysql> wähle * aus Test1, wobei json_extract(info,"$.age")>=30;
+------+---------------------------------+
| Ich würde | Info |
+------+---------------------------------+
| 2 | {"Alter": 30, "Name": "zhangsan"} |
| 3 | {"Alter": 35, "Name": "lisi"} |
+------+---------------------------------+
2 Zeilen im Satz (0,00 Sek.)

Wir können den Inhalt im JSON-Format über die Methode json_extract abrufen. In:

1. Das $-Symbol steht für das Stammverzeichnis von JSON.

2. Wir verwenden $.age, was dem Herausnehmen des Altersfelds in JSON entspricht.

3. Natürlich sollte am Anfang der Funktion der Feldname info geschrieben werden

Schauen wir uns die häufig verwendeten Funktionen in JSON an:

a. json_valid bestimmt, ob es sich um ein JSON-Feld handelt. Wenn ja, gibt es 1 zurück, wenn nicht, gibt es 0 zurück

mysql> wähle json_valid(2);
+-----------------+
| json_gültig(2) |
+-----------------+
| 0 |
+-----------------+
1 Zeile im Satz (0,01 Sek.)
mysql> wähle json_valid('{"num":2}');
+-------------------------+
| json_valid('{"num":2}') |
+-------------------------+
| 1 |
+-------------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle json_valid('2');
+-----------------+
| json_valid('2') |
+-----------------+
| 1 |
+-----------------+
1 Zeile im Satz (0,00 Sek.)
mysql> wähle json_valid('Name');
+--------------------+
| json_valid('Name') |
+--------------------+
| 0 |
+--------------------+
1 Zeile im Satz (0,00 Sek.)

Hierbei ist zu beachten, dass bei Übergabe der Zeichenfolge 2 das Rückgabeergebnis 1 ist.

b. json_keys gibt den Schlüsselwert der obersten Ebene des JSON-Felds zurück.

mysql> wähle json_keys('{"name":"yeyz","score":100}');
+------------------------------------------+
| json_keys('{"name":"yeyz","score":100}') |
+------------------------------------------+
| ["Name", "Punktzahl"] |
+------------------------------------------+
1 Zeile im Satz (0,01 Sek.)
mysql> wähle json_keys('{"name":"yeyz","score":{"math":100,"English":95}}');
+----------------------------------------------------------------+
| json_keys('{"name":"yeyz","score":{"math":100,"English":95}}') |
+----------------------------------------------------------------+
| ["Name", "Punktzahl"] |
+----------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)
#Wenn mehrere Ebenen vorhanden sind, können Sie die $-Methode am Ende verwenden, um das Verzeichnis einer der Ebenen abzurufenmysql> select json_keys('{"name":"yeyz","score":{"math":100,"English":95}}','$.score');
+--------------------------------------------------------------------------+
| json_keys('{"name":"yeyz","score":{"math":100,"English":95}}','$.score') |
+--------------------------------------------------------------------------+
| ["Mathematik", "Englisch"] |
+--------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

c. Die Funktion json_length gibt die Anzahl der Schlüssel in der obersten Ebene zurück. Wenn Sie eine bestimmte Ebene in der Mitte haben möchten, können Sie die $-Methode wie folgt verwenden:

mysql> wähle json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}');
+---------------------------------------------------------------------------+
| json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}') |
+---------------------------------------------------------------------------+
| 3 |
+---------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}','$.score');
+--------------------------------------------------------------------------------------------------+
| json_length('{"name":"yeyz","score":{"math":100,"English":95},"age":26}','$.score') |
+--------------------------------------------------------------------------------------------------+
| 2 |
+--------------------------------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

d. json_depth-Funktion, die Tiefe der JSON-Datei, das Testbeispiel ist wie folgt:

mysql> wähle json_depth('{"aaa":1}'),json_depth('{}');
+-------------------------+------------------+
| json_depth('{"aaa":1}') | json_depth('{}') |
+-------------------------+------------------+
| 2 | 1 |
+-------------------------+------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle json_depth('{"name":"yeyz","score":{"math":100,"English":95},"age":26}');
+--------------------------------------------------------------------------+
| json_depth('{"name":"yeyz","score":{"math":100,"English":95},"age":26}') |
+--------------------------------------------------------------------------+
| 3 |
+--------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Hierbei ist zu beachten, dass die Tiefe von JSON in der Form {'aa':1} 2 beträgt.

e. Die Funktion json_contains_path ruft ab, ob in JSON ein oder mehrere Mitglieder vorhanden sind.

mysql> setze @j='{"a":1,"b":2,"c":{"d":4}}';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
#one bedeutet, dass, solange es ein Mitglied enthält, 1 zurückgegeben wird.
mysql> wähle json_contains_path(@j,'one','$.a','$.e');
+------------------------------------------+
| json_contains_path(@j,'eins','$.a','$.e') |
+------------------------------------------+
| 1 |
+------------------------------------------+
1 Zeile im Satz (0,00 Sek.)
#all bedeutet, dass alle Mitglieder eingeschlossen sind, und nur dann wird 1 zurückgegeben
mysql> wähle json_contains_path(@j,'alle','$.a','$.e');
+------------------------------------------+
| json_contains_path(@j,'alle','$.a','$.e') |
+------------------------------------------+
| 0 |
+------------------------------------------+
1 Zeile im Satz (0,01 Sek.)

mysql> wähle json_contains_path(@j,'one','$.c.d');
+--------------------------------------+
| json_contains_path(@j,'eins','$.c.d') |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle json_contains_path(@j,'one','$.a.d');
+--------------------------------------+
| json_contains_path(@j,'eins','$.a.d') |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 Zeile im Satz (0,00 Sek.)

f. Die Funktion json_type bestimmt den Typ der Mitglieder in JSON und muss in Verbindung mit json_extract verwendet werden.

mysql> wähle * aus test1;
+------+---------------------------------+
| Ich würde | Info |
+------+---------------------------------+
| 1 | {"Alter": 26, "Name": "yeyz"} |
| 2 | {"Alter": 30, "Name": "zhangsan"} |
| 3 | {"Alter": 35, "Name": "lisi"} |
+------+---------------------------------+
3 Zeilen im Satz (0,00 Sek.)
#Beurteilen Sie den Typ von namemysql> select json_type(json_extract(info,"$.name")) from test1;
+----------------------------------------+
| json_type(json_extract(info,"$.name")) |
+----------------------------------------+
| ZEICHENKETTE |
| ZEICHENKETTE |
| ZEICHENKETTE |
+----------------------------------------+
3 Zeilen im Satz (0,00 Sek.)
#Bestimmen Sie den Typ von agemysql> select json_type(json_extract(info,"$.age")) from test1;
+------------------------------------------+
| json_type(json_extract(info,"$.age")) |
+------------------------------------------+
| GANZZAHL |
| GANZZAHL |
| GANZZAHL |
+------------------------------------------+
3 Zeilen im Satz (0,00 Sek.)
#Beurteilen Sie den Typ der Kombination aus Name und Alter. Sie können sehen, dass es sich um ein Array handelt
mysql> wähle json_type(json_extract(info,"$.name","$.age")) aus test1;
+------------------------------------------------+
| json_type(json_extract(info,"$.name","$.age")) |
+------------------------------------------------+
| ANORDNUNG |
| ANORDNUNG |
| ANORDNUNG |
+------------------------------------------------+
3 Zeilen im Satz (0,00 Sek.)

g. Die Rolle von *, alle Werte, siehe die Beispiele unten.

{
 "ein":1,
 "b":2,
 "C":
   {
    "d":4
   }
 "e":
   {
   "D":
     {
     "ddd":
     "5"
     }
   }
}
mysql> setze @j='{"a":1,"b":2,"c":{"d":4},"e":{"d":{"ddd":"5"}}}';
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
#Alle Mitgliedermysql> select json_extract(@j,'$.*');
+------------------------------------------+
| json_extract(@j,'$.*') |
+------------------------------------------+
| [1, 2, {"d": 4}, {"d": {"ddd": "5"}}] |
+------------------------------------------+
1 Zeile im Satz (0,00 Sek.)
#d Mitglied unter allen Mitgliedernmysql> select json_extract(@j,'$.*.d');
+--------------------------+
| json_extract(@j,'$.*.d') |
+--------------------------+
| [4, {"ddd": "5"}] |
+--------------------------+
1 Zeile im Satz (0,00 Sek.)

Oben finden Sie den detaillierten Inhalt der Betriebsmethode des JSON-Felds in MySQL. Weitere Informationen zum MySQL-JSON-Feld finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Eine einfache Erklärung der parallelen MySQL-Replikation
  • Fehlerbehebung bei den Gründen, warum gelöschte MySQL-Datensätze nicht wirksam werden
  • Unterschiede zwischen MySQL CHAR und VARCHAR beim Speichern und Lesen
  • MySQL-Lernprogramm Clustered Index
  • Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen
  • Absteigender Index in MySQL 8.0
  • Detaillierte Erklärung der Speicher-Engine in MySQL
  • Eine Fallstudie zur MySQL-Optimierung
  • So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation
  • Eine kurze Analyse der parallelen MySQL-Replikation

<<:  Vue3 kapselt seine eigene Paging-Komponente

>>:  Detailliertes Tutorial zur Springcloud-Alibaba-Nacos-Linux-Konfiguration

Artikel empfehlen

Das Prinzip und die Implementierung der bidirektionalen Bindung in Vue2.x

Inhaltsverzeichnis 1. Implementierungsprozess 2. ...

Ausführliche Erklärung der Closure in JavaScript

Einführung Closure ist eine sehr leistungsstarke ...

Reines js, um einen Schreibmaschineneffekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung von JavaScript zur Überwachung von Routenänderungen

Inhaltsverzeichnis Geschichte pushState() Methode...

Beispielcode zum Erzielen eines Aushöhlungseffekts mit reinem CSS

Ich habe kürzlich den Aushöhlungseffekt untersuch...

js-Methode zur Realisierung der Warenkorbberechnung

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie den Linux-Befehl „locate“

01. Befehlsübersicht Der Befehl „locate“ ist eige...

So konvertieren Sie Chinesisch in HTML in UTF-8

In HTML kann die chinesische Phrase „學好好學“ als „學...

Zusammenfassung einiger gängiger Techniken in der Front-End-Entwicklung

1. So zeigen Sie das Datum rechts in der Artikelti...

Erstellen Sie eine Bildschirmaufzeichnungsfunktion mit JS

OBS studio ist cool, aber JavaScript ist cooler. ...

Beispielanalyse des Prinzips und der Lösung des MySQL-Gleitreihenfolgeproblems

Dieser Artikel erläutert anhand von Beispielen da...

So zeigen Sie historische Befehle in Linux an und führen sie aus

Historische Befehle anzeigen und bestimmte Befehl...