Ponieważ wiele osób zadało mi to pytanie osobiście, pomyślałem, że podam tę odpowiedź jeszcze raz. Oto przegląd zawierający kompletny SQL z SELECT, Migration i View Creation i skrzypce sql na żywo (dostępność nie jest gwarantowana dla skrzypiec) .
Załóżmy, że masz tabelę (o nazwie:TBL_JSON) w następujący sposób:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Aby wybrać poszczególne pola json, możesz wykonać:
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;
które wyniki:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Może to być kosztowna operacja do uruchomienia w oparciu o rozmiar danych i złożoność json. Proponuję używać go do
- Migracja tabeli do podzielonej bazy danych (Zobacz dodatek 2-B w skrócie)
- Przynajmniej utwórz widok (Zobacz dodatek 2-C w skrócie)
Uważaj na:możesz mieć json zaczynający się od podwójnych cudzysłowów (zwięzły):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Testowane z Mysql 5.7 na Ubuntu i Mac OSX Sierra.