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

Vue verwendet das Video-Tag, um die Videowiedergabe zu implementieren

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

Lösung für das Jitter-Problem beim CSS3-Transformationsübergang

transform: scale(); Skalierung verursacht Jitter ...

Teilen Sie 20 hervorragende Beispiele für Webformular-Design

Sophie Hardach Kai von Clyde Quay 37 Ost Seifenkis...

...

Docker stop stoppt/remove löscht alle Container

In diesem Artikel wird hauptsächlich das Stoppen/...

So verwenden Sie Dockerfile zum Erstellen von Images in Docker

Erstellen des Images Früher haben wir verschieden...

Installieren des Win10-Systems auf VMware Workstation 14 Pro

Dieser Artikel beschreibt zu Ihrer Information, w...

Einstellen der Engine MyISAM/InnoDB beim Erstellen einer Datentabelle in MySQL

Als ich MySQL konfiguriert habe, habe ich die Sta...