Étant donné que beaucoup de gens m'ont personnellement posé cette question, j'ai pensé que je donnerais à cette réponse une deuxième révision. Voici un essentiel qui contient le SQL complet avec SELECT, migration et création de vue et un violon SQL en direct (disponibilité non garantie pour le violon) .
Supposons que vous ayez une table (nommée :TBL_JSON) comme celle-ci :
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Pour sélectionner chaque champs json, vous pouvez faire :
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;
ce qui donne :
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Cela peut être une opération coûteuse à exécuter en fonction de la taille de vos données et de la complexité de JSON. Je suggère de l'utiliser pour
- Migration de la table vers la base de données fractionnée (Voir l'annexe 2-B dans l'essentiel)
- Créez au moins une vue (Voir l'annexe 2-C dans l'essentiel)
Attention :vous pouvez avoir json commençant par des guillemets doubles (chaîne :
"{"male" : 2000, "female" : 3000, "other" : 600}"
Testé avec Mysql 5.7 sur Ubuntu et Mac OSX Sierra.