Vì có rất nhiều người đã đặt câu hỏi này cho cá nhân tôi, tôi nghĩ rằng tôi sẽ đưa ra câu trả lời này một bản sửa đổi thứ hai. Đây là ý chính có SQL hoàn chỉnh với SELECT, Migration và View Creation và sql fiddle trực tiếp (tính khả dụng không được đảm bảo cho fiddle) .
Giả sử bạn có bảng (có tên:TBL_JSON) như sau:
ID CITY POPULATION_JSON_DATA
-----------------------------------------------------------------------
1 LONDON {"male" : 2000, "female" : 3000, "other" : 600}
2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}
Để Chọn từng trường json, bạn có thể thực hiện:
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;
kết quả nào:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER
-----------------------------------------------------------------
1 LONDON 2000 3000 600
2 NEW YORK 4000 5000 500
Đây có thể là một hoạt động tốn kém để chạy dựa trên kích thước dữ liệu và độ phức tạp json của bạn. Tôi khuyên bạn nên sử dụng nó cho
- Di chuyển bảng sang cơ sở dữ liệu phân tách ( Xem phụ lục 2-B trong ý chính)
- Ít nhất hãy tạo một chế độ xem (Xem phụ lục 2-C trong ý chính)
Lưu ý:Bạn có thể có json bắt đầu bằng dấu ngoặc kép (đã xâu chuỗi):
"{"male" : 2000, "female" : 3000, "other" : 600}"
Đã thử nghiệm với Mysql 5.7 trên Ubuntu và Mac OSX Sierra.