sql >> Databasteknik >  >> RDS >> Mysql

Hur hämtar jag JSON-data från MySQL?

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

  1. Migrering av tabell till delad databas (Se bilaga 2-B i sammanfattning)
  2. 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.



  1. skapa parametriserade vyer i oracle11g

  2. När ska man använda enkla citattecken, dubbla citattecken och backticks i MySQL

  3. Vad är MariaDB Enterprise Cluster?

  4. PostgreSQL Omvänd LIKE