Тъй като много хора са ми задавали този въпрос лично, реших да дам на този отговор втора ревизия. Ето същност, която има пълния SQL с SELECT, миграция и създаване на изглед и жива sql цигулка (наличността не е гарантирана за цигулка) .
Да приемем, че имате таблица (с име:TBL_JSON) като тази:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
За да изберете всяко json поле, можете да направите:
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;
което води до:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Това може да е скъпа операция за изпълнение въз основа на размера на вашите данни и сложността на json. Предлагам да го използвате за
- Мигриране на таблица към разделена база данни (Вижте приложение 2-B в същността)
- Поне създайте изглед (Вижте Приложение 2-C в същността)
Внимавайте за:Може да имате json започващ с двойни кавички (стринг):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Тестван с Mysql 5.7 на Ubuntu и Mac OSX Sierra.