sql >> Database teknologi >  >> RDS >> Mysql

Hvordan henter jeg JSON-data fra MySQL?

Da en masse mennesker har stillet dette spørgsmål til mig personligt, tænkte jeg, at jeg ville give dette svar en anden revision. Her er et indhold, der har den komplette SQL med SELECT, Migration og View Creation og en live sql violin (tilgængelighed ikke garanteret for violin) .

Lad os sige, at du har en tabel (navngivet:TBL_JSON) som denne:

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

For at vælge hvert json-felt kan du gøre:

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;

hvilket resulterer:

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

Dette kan være en dyr operation at køre baseret på din datastørrelse og json-kompleksitet. Jeg foreslår, at du bruger det til

  1. Migration af tabel til opdelt database (Se Appendiks 2-B i hovedtræk)
  2. Opret i det mindste en visning (Se Appendiks 2-C i hovedtræk)

Pas på:Du kan have json startende med dobbelte anførselstegn (strenget):

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

Testet med Mysql 5.7 på Ubuntu og Mac OSX Sierra.



  1. Hvordan får man ASCII-værdi i Oracle?

  2. 8 måder at tilføje en time til et datotidspunkt i MariaDB

  3. SQL Server datetime LIKE vælge?

  4. Hvorfor og hvornår skal jeg bruge SPARSE COLUMN? (SQL SERVER 2008)