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

Detaillierte Erklärung des Javascript Echarts Luftqualitätskarteneffekts

Wir müssen zunächst die Luftqualitätsdaten mit de...

So verwenden Sie reguläre Ausdrucksabfragen in MySql

Reguläre Ausdrücke werden häufig verwendet, um Te...

Der URL-Wert des SRC- oder CSS-Hintergrundbildes ist der Base64-codierte Code

Möglicherweise ist Ihnen aufgefallen, dass auf die...

Detaillierte Erklärung gängiger Docker Compose-Befehle

1. Die Verwendung von Docker Compose ist der Verw...

Führen Sie die Schritte zur Installation von MySQL 8.0.x unter Linux aus.

MySQL Einführung in MySQL MySQL war ursprünglich ...

30 Minuten, um Ihnen ein umfassendes Verständnis von React Hooks zu vermitteln

Inhaltsverzeichnis Überblick 1. useState 1.1 Drei...

Optimieren der langsamen Abfrage von MySQL-Aggregatstatistikdaten

Vorne geschrieben Wenn wir in unserem täglichen L...

CocosCreator ScrollView-Optimierungsreihe: Frame-Laden

Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...

So verarbeiten Sie sehr große Formularbeispiele mit Vue+ElementUI

Aufgrund von Geschäftsanpassungen im Unternehmen ...

Detaillierte Erklärung der Fallstricke von MySQL 8.0

Ich habe heute MySQL 8.0 aktualisiert. Das erste ...

Verschiedene Methoden zum Neustarten von Mysql unter CentOS (empfohlen)

1. MySQL über RPM-Paket installiert Dienst MySQL ...

Zwei Möglichkeiten zum Löschen von Tabellendaten in MySQL und ihre Unterschiede

Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...