Detaillierte Erklärung zur Abfrage von Feldern im JSON-Format in MySQL

Detaillierte Erklärung zur Abfrage von Feldern im JSON-Format in MySQL

Während des Entwicklungsprozesses trat eine Anforderung auf: Name, Handynummer, Ausweis und Dokumenttyp des Kunden mussten dynamisch gespeichert werden. Dies bedeutet, dass das Frontend die Informationen von einer, zwei oder drei Personen übertragen kann, was einer dynamischen und nicht festgelegten Anzahl von vier Feldern entspricht (Name, Handynummer, Ausweis, Dokumenttyp).

Die Frontend-Seite sieht wie folgt aus:

Dies ist das Bild der Frontpartie

Ich verwende List Um das JSON vom Frontend zu empfangen, verwendet MySQL varchar, um dieses JSON-Array zu speichern

[{
	"cardId": "110101199003072316",
	"cstName": "Zhang Shuang'er 1",
	"cstMobile": "13263654144",
	"Ausweistyp": "1"
}, {
	"cardId": "11010119900307571X",
	"cstName": "Zhang Shuang'er 2",
	"cstMobile": "13263654144",
	"Ausweistyp": "1"
}]

Die Produktanforderung besteht darin, diese gemeinsamen Kundeninformationen unscharf abzufragen. Am Anfang habe ich es falsch geschrieben:

Wählen Sie * aus signCustomerGroup wie '%儿%'

Doch später stieß ich auf ein Problem. Wenn ich beispielsweise den Buchstaben „c“ ungenau eingebe, wird der englische Feldname „cardId“ auf der linken Seite gefunden.
Später erfuhr ich, dass MySQL 5.7 und spätere Versionen den JSON-Typ hinzugefügt haben und einige JSON-Typfunktionen verwendet werden können, um ein Feld im JSON-Format direkt abzufragen.

Die korrekte Syntax lautet wie folgt:

Tabellenfelder:

Ausweis sign_customer_info_ext
1 [{“cstName”:“hhjk”,“cstMobile”:“14258669888”,“idCardType”:“1”,“cardId”:“460101199601012516”}]
2 [{"cstName":"ghhj中文1355","cstMobile":"18253558608","idCardType":"1","cardId":"460101199601012815"},{"cstName":"fhjj重要133366","cstMobile":"15555555555","idCardType":"1","cardId":"460101199601012313"}]

Die wichtigste verwendete SQL-Funktion ist json_extract(), mit der alle angegebenen Daten im JSON-Format gefunden werden.

1. JSON-Array-Abfrage

Fuzzy-Abfrage eines Felds im JSON-Array-Format:
Anwendung:
SELECT * FROM Tabellenname WHERE json_extract(Feldname,"$[*].json中key") wie '%zu suchender Wert%';
Beispiele:
SELECT * FROM Tabelle WHERE json_extract(sign_customer_info_ext,"$[*].cstName") wie '%h%';
Präzise Abfrage (Hinweis: Bei einer präzisen Abfrage muss der Index des Arrays angegeben werden, zu dem das abgefragte Feld gehört. Wenn beispielsweise der erste Index [0] ist, ist der zweite Index [1]).
Wählen Sie ID, sign_customer_info_ext aus der Tabelle aus, wobei json_extract (sign_customer_info_ext, "$[0].cstName") = "ghhj中文1355" ist.

2. Einzelne JSON-Abfrage

Einzelner JSON-Parameter im Frontend und in der MySQL-Datenbank:

{
	"cstName": "Ma Yun",
	"cstMobile": "17879767646",
	"idCardType": "1",
	"cardId": "E4813980"
}
Fuzzy-Abfrage, einzelne JSON-Abfrage:
Anwendung:
SELECT id,sign_customer_info_ext FROM Tabellenname WHERE json_extract(Feldname,"$.json中key") like '%马云%';
Beispiele:
SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$.cstName") like '%Ma Yun%';

Zusammenfassen

Dies ist das Ende dieses Artikels über die Abfrage des JSON-Formats in MySQL. Weitere relevante Inhalte für MySQL-Abfragen im JSON-Format finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • MySQL-Implementierung zum Extrahieren und Abfragen von Felddaten des Typs JSON
  • MySQL ruft Daten basierend auf dem JSON-Feldinhalt als Abfragebedingung ab (einschließlich JSON-Arrays).
  • Mybatis MySQL Fuzzy-Abfragemethode (CONCAT mehrere Felder) und Fehler
  • Beispielcode zur Implementierung der String-Split-Funktion im MySQL-Abfragefeld
  • So weisen Sie Feldern bei der MySQL-Abfrage Standardwerte zu
  • Abfragen von MySQL-Datums- und Zeitfeldern

<<:  HTML-Tbody-Verwendung

>>:  Reines js, um den Effekt eines Karussells zu erzielen

Artikel empfehlen

15-minütiges paralleles Artefakt GNU Parallel Erste Schritte

GNU Parallel ist ein Shell-Tool zum parallelen Au...

So installieren und konfigurieren Sie Docker nginx

Laden Sie das Nginx-Image in Docker herunter Dock...

Kurze Analyse von CentOS 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

Baidu Cloud-Festplatte: Link: https://pan.baidu.c...

So fügen Sie einem Alpine-Image einen Ansible-Dienst hinzu

Verwenden Sie apk add ansible, um den Ansible-Die...

Tutorial zu HTML-Tabellen-Tags (13): Regeln für interne Rahmenstilattribute

Mit REGELN kann die Art der inneren Rahmen der Ta...

Implementierung von Wasserfall-Layout + dynamischem Rendering

Inhaltsverzeichnis Typische Wasserfall-Website Wa...

Warum wirkt sich die Verwendung von Limits in MySQL auf die Leistung aus?

Lassen Sie mich zunächst die MySQL-Version erklär...

Warum wird für die Webseitenkodierung UTF-8 statt GBK oder GB2312 verwendet?

Wenn Sie die Wahl haben, sollten Sie UTF-8 verwen...

mysql 5.7.11 winx64 anfängliche Passwortänderung

Laden Sie die komprimierte Version von MySQL-5.7....

Drei Beispiele für Node.js-Methoden zum Abrufen von Formulardaten

Vorwort Nodejs ist eine serverseitige Sprache. Wä...

Javascript zum Wechseln von Bildern per Mausklick

In diesem Artikelbeispiel wird der spezifische Ja...