sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo recuperar datos JSON de MySQL?

Como mucha gente me ha hecho esta pregunta personalmente, pensé en darle una segunda revisión a esta respuesta. Aquí hay una esencia que tiene el SQL completo con SELECT, migración y creación de vistas y un violín sql en vivo (disponibilidad no garantizada para violín) .

Digamos que tiene una tabla (llamada:TBL_JSON) como esta:

 ID   CITY        POPULATION_JSON_DATA
-----------------------------------------------------------------------
 1    LONDON      {"male" : 2000, "female" : 3000, "other" : 600}
 2    NEW YORK    {"male" : 4000, "female" : 5000, "other" : 500}

Para seleccionar cada campo json, puede hacer:

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;

cuyo resultado:

ID  CITY      POPL_MALE  POPL_FEMALE   POPL_OTHER 
-----------------------------------------------------------------
1   LONDON    2000       3000          600
2   NEW YORK  4000       5000          500

Esta podría ser una operación costosa de ejecutar según el tamaño de los datos y la complejidad de json. Sugiero usarlo para

  1. Migración de tabla a base de datos dividida (Ver Apéndice 2-B en esencia)
  2. Al menos crea una vista (Consulta el Apéndice 2-C en esencia)

Tenga cuidado con:Es posible que tenga json comenzando con comillas dobles (en cadena):

"{"male" : 2000, "female" : 3000, "other" : 600}"

Probado con Mysql 5.7 en Ubuntu y Mac OSX Sierra.