Eftersom många människor har ställt den här frågan till mig personligen tänkte jag att jag skulle ge det här svaret en andra revision. Här är en sammanfattning som har komplett SQL med SELECT, Migration och View Creation och en live sql-fiol (tillgänglighet inte garanterad för fiol) .
Låt oss säga att du har en tabell (som heter:TBL_JSON) så här:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
För att välja varje json-fält kan du göra:
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;
vilket resulterar:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Detta kan vara en dyr operation att köra baserat på din datastorlek och json-komplexitet. Jag föreslår att du använder den för
- Migrering av tabell till delad databas (Se bilaga 2-B i sammanfattning)
- Skapa åtminstone en vy (Se bilaga 2-C i sammanfattning)
Se upp för:Du kanske har json som börjar med dubbla citattecken (strängad):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Testad med Mysql 5.7 på Ubuntu och Mac OSX Sierra.