Vzhledem k tomu, že se mě na tuto otázku osobně ptalo mnoho lidí, myslel jsem, že tuto odpověď dám ještě jednou revizí. Zde je podstata, která obsahuje kompletní SQL s SELECT, migrací a vytvářením zobrazení a živé sql housle (dostupnost není zaručena pro housle) .
Řekněme, že máte tabulku (s názvem:TBL_JSON) takto:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Chcete-li vybrat jednotlivá pole json, můžete:
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;
což má za následek:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Spuštění této operace může být nákladné na základě velikosti dat a složitosti json. Doporučuji jej používat pro
- Migrace tabulky do rozdělené databáze (Viz příloha 2-B v souhrnu)
- Vytvořte alespoň zobrazení (viz příloha 2-C v souhrnu)
Dejte si pozor na:Možná máte json začínající dvojitými uvozovkami (stringified):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Testováno s Mysql 5.7 na Ubuntu a Mac OSX Sierra.