Можете да направите това в MySQL 8.0 с JSON_TABLE() :
select r.res from mytable,
json_table(mytable.content, '$[*]' columns (res int path '$')) r
where mytable.id = 1
Тествах на MySQL 8.0.17 и това е изходът:
+------+
| res |
+------+
| 3 |
| 4 |
+------+
Ако използвате версия, по-стара от MySQL 8.0, имате следните опции:
- Намерете някакво невъзможно сложно SQL решение. Това почти винаги е грешен начин за решаване на проблема, защото в крайна сметка получавате код, който е твърде скъп за поддръжка.
- Извлечете JSON масива такъв, какъвто е, и го разглобете в кода на приложението.
- Нормализирайте данните си, така че да имате една стойност на ред, вместо да използвате JSON масиви.
Често намирам въпроси в Stack Overflow относно използването на JSON в MySQL, които ме убеждават, че тази функция е съсипала MySQL. Разработчиците продължават да го използват неправилно. Харесва им, че улеснява вмъкването полуструктурирани данни, но те откриват, че те правят запитване тези данни са твърде сложни.