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

Wie rufe ich JSON-Daten von MySQL ab?

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

  1. Migration der Tabelle in die geteilte Datenbank (Siehe Anhang 2-B im Wesentlichen)
  2. 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.