Vous pouvez le faire dans MySQL 8.0 avec JSON_TABLE() :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
J'ai testé sur MySQL 8.0.17, et voici le résultat :
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Si vous utilisez une version antérieure à MySQL 8.0, vous avez les options suivantes :
- Trouver une solution SQL incroyablement complexe. C'est presque toujours la mauvaise façon de résoudre le problème, car vous vous retrouvez avec un code trop coûteux à maintenir.
- Récupérer le tableau JSON tel quel et l'exploser dans le code de l'application.
- Normalisez vos données afin d'avoir une valeur par ligne, au lieu d'utiliser des tableaux JSON.
Je trouve souvent sur Stack Overflow des questions sur l'utilisation de JSON dans MySQL qui me convainquent que cette fonctionnalité a ruiné MySQL. Les développeurs continuent à l'utiliser de manière inappropriée. Ils apprécient le fait qu'il soit facile de insérer des données semi-structurées, mais ils constatent qu'il est interrogation que les données sont beaucoup trop complexes.