netrox
@netrox

Как извлечь JSON объект из массива?

Есть таблица с двумя колонками id(int) и users(json). В колонке users пользователи хранятся в виде массива JSON объектов:
[{"user_id": 52 , "name": "Tomas"}, {"user_id": 59 , "name": "John"}, {"user_id": 79 , "name": "Alex"}]

Как составить запрос, чтобы например получить имя пользователя, у которого user_id = 59 ?
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
vman
@vman
я вот только до такого додумался

select * from t;
+-------------------------------------------------------------------------+
| u                                                                       |
+-------------------------------------------------------------------------+
| [{"name": "Tomas", "user_id": "52"}, {"name": "John", "user_id": "59"}] |
+-------------------------------------------------------------------------+
1 row in set (0.00 sec)

SELECT JSON_EXTRACT(u, REPLACE(REPLACE(JSON_SEARCH(u, 'one', '52'), 'user_id', 'name'), '"', '')) FROM t;
+--------------------------------------------------------------------------------------------+
| JSON_EXTRACT(u, REPLACE(REPLACE(JSON_SEARCH(u, 'one', '52'), 'user_id', 'name'), '"', '')) |
+--------------------------------------------------------------------------------------------+
| "Tomas"                                                                                    |
+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы