Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment récupérer les données JSON de MySQL ?

É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

  1. Migration de la table vers la base de données fractionnée (Voir l'annexe 2-B dans l'essentiel)
  2. 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.