1. Beschreibung des json_extract-Nutzungsszenarios
In der täglichen Geschäftsentwicklung muss in der Regel ein Feld in der MySQL-Datenbank gespeichert werden. Bei der Abfrage sind die JSON-Daten manchmal groß und werden jedes Mal herausgenommen , die Abfrage wird weniger effizient und problematischer
Glücklicherweise bieten Mysql5.7 und spätere Versionen die Funktion json_extract, die den Wert über den Schlüssel abfragen kann (wenn es sich um einen JSON-Array-Typ handelt, können Sie den Wert abrufen der entsprechenden Position durch den Index), was sehr praktisch ist.
2. Einführung in die MySQL-json_extract-Funktion
2.1 Einführung in die Funktion a Ein internes Binärformat, das ein schnelles Lesen von Dokumentelementen ermöglicht. Json-Text wird automatisch überprüft, wenn eine Json-Spalte eingefügt oder aktualisiert wird. Bei Text, der die Überprüfung nicht besteht, wird eine Fehlermeldung generiert. JSON-Text wird standardmäßig erstellt und die meisten Vergleichsoperatoren können für Vergleichsoperationen verwendet werden, z. B. =, 91eef5681cad6f0cc96f9adeb2931b45, >=, a8093152e673feb7aba1828c43532094, != und b207bb093495751f3e536c5eb7122819.
2.2 Verwendung
Die gespeicherten Daten sind JSON-Strings (Typ ist Vachar).
Wenn Sie den Wert eines bestimmten Felds in JSON abfragen möchten, verwenden Sie die folgende Methode: JSON_EXTRACT().
Syntax:
**JSON_EXTRACT(json_doc, path[, path] …)**
Verwendungstipps:
2.3 注意事项
JSON_EXTRACT性能验证 , 通过查看执行计划,验证全部都是全表扫描。
使用场景:数据量不大json字符串较大则可以采用,数据量较大不建议使用。
3. 数据验证
3.1 提取普通json中的值
说明:
普通字段使用 $.KEY
获取
-
数组字段使用 $.KEY[index]
Wenn die JSON-Zeichenfolge ein Array [Array] ist, verwenden Sie direkt $[entsprechende Index-ID]
-
2.3 Hinweise
JSON_EXTRACT-Leistungsüberprüfung durch Anzeigen der Ausführung Plan und Überprüfung sind alle vollständige Tabellenscans.
Verwendungsszenarien: Wenn die Datenmenge klein ist, kann sie verwendet werden, wenn die JSON-Zeichenfolge groß ist. Wenn die Datenmenge jedoch groß ist, wird dies nicht empfohlen.
3. Datenüberprüfung SCHLÜSSEL für Array-Felder [index] Erhalten Sie, beachten Sie, dass der Index bei 0 beginnt Das Nullen und Ersetzen von JSON ist erforderlich. Vorgang
| "zhangsan" | 136- 6666-6666 | Name | Tags |
|
1 zhangsan | ["COMMON"] |
| 2 | lisi | ["VIP"] |
3
wangwu
["VVIP","PLATINUM" ]
4 | zhaoliu | |
Erstes Tag des Benutzers extrahieren: select
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.name") as name,
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.tel_no") as tel_no,
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[0]") as hobby_1,
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[1]") as hobby_2,
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[2]") as hobby_3,
json_extract('{"name":"zhangsan","tel_no":"136-6666-6666","hobbies":["basketball","run","sing"]}',"$.hobbies[3]") as hobby_4;
Ergebnis: |
|
| id
Name | tags |
|
1 | zhangsan | „GEMEINSAM“ |
1
Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktion json_extract in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!