Aangezien veel mensen mij deze vraag persoonlijk hebben gesteld, dacht ik dit antwoord een tweede herziening te geven. Hier is een kern met de volledige SQL met SELECT, Migration en View Creation en een live sql-viool (beschikbaarheid niet gegarandeerd voor viool) .
Laten we zeggen dat je een tabel hebt (genaamd:TBL_JSON) zoals deze:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Om elk json-veld te selecteren, kunt u het volgende doen:
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;
welke resultaten:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Dit kan een dure operatie zijn om uit te voeren op basis van uw gegevensgrootte en json-complexiteit. Ik raad aan het te gebruiken voor
- Migratie van tabel naar gesplitste database (Zie bijlage 2-B in essentie)
- Maak in ieder geval een weergave (Zie bijlage 2-C in essentie)
Pas op voor:Mogelijk hebt u json beginnend met dubbele aanhalingstekens (stringen):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Getest met Mysql 5.7 op Ubuntu en Mac OSX Sierra.