Możesz to zrobić w MySQL 8.0 za pomocą JSON_TABLE() :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
Testowałem na MySQL 8.0.17 i oto wynik:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Jeśli używasz wersji starszej niż MySQL 8.0, masz następujące opcje:
- Znajdź niewiarygodnie złożone rozwiązanie SQL. Prawie zawsze jest to zły sposób rozwiązania problemu, ponieważ otrzymujesz kod, który jest zbyt drogi w utrzymaniu.
- Pobierz tablicę JSON bez zmian i rozbij ją w kodzie aplikacji.
- Znormalizuj swoje dane, aby mieć jedną wartość na wiersz, zamiast używać tablic JSON.
Często znajduję pytania na Stack Overflow dotyczące używania JSON w MySQL, które przekonują mnie, że ta funkcja zrujnowała MySQL. Deweloperzy używają go niewłaściwie. Podoba im się, że ułatwia wstawianie dane częściowo ustrukturyzowane, ale okazało się, że powoduje to zapytanie te dane są zbyt skomplikowane.