Mysql разбить массив json на строки

Из таблицы со столбцом с массивом словарей json мне нужно извлечь все значения ключа «user_id» по одному на строку. Если нулевой или пустой массив возвращает NULL. Подобно методу взрыва панд Python.

Длина массива неизвестна.

Исходная таблица:

| id | users                                                           |
|----|-----------------------------------------------------------------|
|  1 |[{"id": 2, "mail": "[email protected]"}, {"id": 3, "mail": "[email protected]"}] |
|  2 |[{"id": 5, "email": "[email protected]"}]"                            |
|  3 | []
                                                           |

Обработанная таблица:

| id | users    |
|----|----------|
|  1 | 2        |
|  1 | 3        |
|  2 | 5        |
|  3 | NULL     |
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
select id, j.user_id from mytable left outer join 
json_table(users, '$[*]' columns (user_id int path '$.user_id')) as j on true;

+------+---------+
| id   | user_id |
+------+---------+
|    1 |       2 |
|    1 |       3 |
|    2 |       5 |
|    3 |    NULL |
+------+---------+

Прочтите https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html для получения дополнительной информации о функции JSON_TABLE().

Спасибо @BillKarwin за ваш ответ. Вы редактируете быстрее, чем я редактирую, можете ли вы отредактировать свой ответ, теперь я правильно отформатировал вопрос?

Emilio Carrasco Moreno 29.11.2022 17:02

Другие вопросы по теме