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

Vue implementiert einen einfachen Lupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für Nginx-Installationsfehler

1. Entpacken Sie nginx-1.8.1.tar.gz 2. Entpacken ...

Das Prinzip und die Anwendung der ES6-Dekonstruktionszuweisung

Inhaltsverzeichnis Array-Destrukturierungszuweisu...

Beheben Sie den abnormalen Fehler beim Erstellen einer Vue-Umgebung mit Webpack

Inhaltsverzeichnis Konfigurieren Sie zuerst packa...

Allgemeine Schreibbeispiele für MySQL- und Oracle-Batch-Insert-SQL

Inhaltsverzeichnis Zum Beispiel: Allgemeines Schr...

WebWorker kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Implementieren ...

CSS float (float, clear) beliebte Erklärung und Erfahrungsaustausch

Ich bin schon vor langer Zeit mit CSS in Berührun...

Javascript um den Drag-Effekt der Login-Box zu erreichen

In diesem Artikel wird der spezifische Code von J...

SQL-Implementierung von LeetCode (197. Steigende Temperatur)

[LeetCode] 197.Steigende Temperatur Schreiben Sie...

Auszeichnungssprache - Bildersetzung

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...