Karena banyak orang telah menanyakan pertanyaan ini kepada saya secara pribadi, saya pikir saya akan memberikan jawaban ini revisi kedua. Ini inti yang memiliki SQL lengkap dengan SELECT, Migration, dan View Creation dan biola sql langsung (ketersediaan tidak dijamin untuk biola) .
Katakanlah Anda memiliki tabel (bernama:TBL_JSON) seperti ini:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Untuk Memilih setiap bidang json, Anda dapat melakukan:
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;
yang hasilnya:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Ini mungkin operasi yang mahal untuk dijalankan berdasarkan ukuran data dan kompleksitas json Anda. Saya sarankan menggunakannya untuk
- Migrasi tabel ke database terpisah (Lihat Lampiran 2-B pada intinya)
- Setidaknya buat tampilan (Lihat Lampiran 2-C pada intinya)
Hati-hati untuk:Anda mungkin memiliki json dimulai dengan tanda kutip ganda (dirangkai):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Diuji dengan Mysql 5.7 di Ubuntu dan Mac OSX Sierra.