Sie können dies in MySQL 8.0 mit JSON_TABLE() tun. :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
Ich habe auf MySQL 8.0.17 getestet und das ist die Ausgabe:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Wenn Sie eine ältere Version als MySQL 8.0 verwenden, haben Sie folgende Möglichkeiten:
- Finden Sie eine unglaublich komplexe SQL-Lösung. Dies ist fast immer der falsche Weg, um das Problem zu lösen, da Sie am Ende Code haben, dessen Wartung zu teuer ist.
- Das JSON-Array so abrufen, wie es ist, und es im Anwendungscode auflösen.
- Normalisieren Sie Ihre Daten, sodass Sie einen Wert pro Zeile haben, anstatt JSON-Arrays zu verwenden.
Auf Stack Overflow finde ich oft Fragen zur Verwendung von JSON in MySQL, die mich davon überzeugen, dass diese Funktion MySQL ruiniert hat. Entwickler verwenden es weiterhin unangemessen. Sie mögen es, dass es leicht einzufügen ist halbstrukturierte Daten, aber sie finden, dass es Abfragen macht diese Daten viel zu komplex.