Bạn có thể thực hiện việc này trong MySQL 8.0 với JSON_TABLE () :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
Tôi đã thử nghiệm trên MySQL 8.0.17 và đây là kết quả:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Nếu bạn sử dụng phiên bản cũ hơn MySQL 8.0, bạn có các tùy chọn sau:
- Tìm một số giải pháp SQL phức tạp đến không tưởng. Đây hầu như luôn là cách sai để giải quyết vấn đề, vì bạn sẽ nhận được mã quá đắt để duy trì.
- Tìm nạp mảng JSON như hiện tại và khai thác nó trong mã ứng dụng.
- Chuẩn hóa dữ liệu của bạn để bạn có một giá trị trên mỗi hàng, thay vì sử dụng mảng JSON.
Tôi thường tìm thấy câu hỏi trên Stack Overflow về việc sử dụng JSON trong MySQL thuyết phục tôi rằng tính năng này đã phá hỏng MySQL. Các nhà phát triển tiếp tục sử dụng nó một cách không thích hợp. Họ thích rằng nó giúp dễ dàng chèn dữ liệu bán cấu trúc, nhưng họ thấy rằng nó tạo ra truy vấn dữ liệu đó quá phức tạp.