Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage, WO-Spalte im JSON-Array ist

Ich denke, Sie können dies nur in Mysql 5.7 erreichen.

In Version 5.7 können Sie so etwas tun:

SELECT JSON_EXTRACT(json_field, '$.name');

und es wird nur der Namensschlüssel extrahiert aus dem json-Objekt.

Alle Elemente mit dem 'JavaScript'-Tag durchsuchen:

SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');

Alle Elemente finden, deren Tags mit „Java“ beginnen:

SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;

Verwenden Sie „one“, um die erste Übereinstimmung zu finden, oder „all“, um alle Übereinstimmungen zu finden

Sie können den Twitter-Spitznamen mithilfe eines JSON-Pfads extrahieren:

SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;

Sie können in der WHERE-Klausel auch auf einen JSON-Pfad verweisen, um nur Benutzer mit einem Twitter-Konto zurückzugeben:

SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;

Sie können weitere Dinge tun wie:

  • Erstellen von JSON-Werten

  • Normalisierung, Zusammenführung und Autowrapping von JSON-Werten

  • Suchen und Ändern von JSON-Werten

  • Vergleich und Reihenfolge von JSON-Werten

  • Aggregation von JSON-Werten

Weitere Informationen finden Sie unter:https://dev.mysql. com/doc/refman/5.7/en/json.html