Anda dapat melakukan ini di MySQL 8.0 dengan JSON_TABLE() :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
Saya menguji di MySQL 8.0.17, dan ini adalah outputnya:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Jika Anda menggunakan versi yang lebih lama dari MySQL 8.0, Anda memiliki opsi berikut:
- Temukan beberapa solusi SQL yang sangat rumit. Ini hampir selalu merupakan cara yang salah untuk menyelesaikan masalah, karena Anda akan mendapatkan kode yang terlalu mahal untuk dipelihara.
- Ambil array JSON apa adanya, dan ledakkan dalam kode aplikasi.
- Normalkan data Anda sehingga Anda memiliki satu nilai per baris, daripada menggunakan array JSON.
Saya sering menemukan pertanyaan di Stack Overflow tentang penggunaan JSON di MySQL yang meyakinkan saya bahwa fitur ini telah merusak MySQL. Pengembang terus menggunakannya secara tidak tepat. Mereka suka itu membuatnya mudah untuk menyisipkan data semi-terstruktur, tetapi mereka menemukan bahwa itu membuat meminta data itu terlalu kompleks.