Da mir viele Leute diese Frage persönlich gestellt haben, dachte ich, ich würde diese Antwort noch einmal überarbeiten. Hier ist ein Kernstück, das die vollständige SQL mit SELECT, Migration und Ansichtserstellung enthält und eine Live-SQL-Fiddle (Verfügbarkeit für Geige nicht garantiert) .
Angenommen, Sie haben eine Tabelle (mit dem Namen:TBL_JSON) wie diese:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Um jedes json-Feld auszuwählen, können Sie Folgendes tun:
SELECT
ID, CITY,
json_extract(POPULATION_JSON_DATA, '$.male') AS POPL_MALE,
json_extract(POPULATION_JSON_DATA, '$.female') AS POPL_FEMALE,
json_extract(POPULATION_JSON_DATA, '$.other') AS POPL_OTHER
FROM TBL_JSON;
was ergibt:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Dies kann basierend auf Ihrer Datengröße und JSON-Komplexität ein teurer Vorgang sein. Ich schlage vor, es zu verwenden für
- Migration der Tabelle in die geteilte Datenbank (Siehe Anhang 2-B im Wesentlichen)
- Erstellen Sie zumindest eine Ansicht (Siehe Anhang 2-C im Wesentlichen)
Achten Sie auf:Möglicherweise haben Sie json beginnend mit doppelten Anführungszeichen (stringifiziert):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Getestet mit Mysql 5.7 auf Ubuntu und Mac OSX Sierra.