Как я могу сравнить данные в массиве строк, который находится в одном столбце таблицы, с данными JSON в другом столбце таблицы?

Мне тяжело со всеми этими сложностями. Ради этого вопроса у меня есть таблица с двумя столбцами. Один столбец с именами содержит такие данные:

["Marc", "Teddy", "Katie"]

Второй столбец содержит данные JSON следующим образом:

{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}], 
 "females":[{"name":"Katie","age":"28"}]}

Есть ли способ в SQL сравнить строки в массиве в первом столбце с полем имени в данных JSON во втором столбце, чтобы приписать поле возраста в JSON строкам имени в первом столбце?

Я понимаю, что это сложная/запутанная ситуация, но любая помощь с извлечением данных из массива в столбце или извлечением данных из JSON в столбце была бы очень полезна для меня, пока я работаю над этим.

Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
324
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, вам нужна функция JSON_CONTAINS() вместе с функцией JSON_EXTRACT(), чтобы сравнить такие столбцы, как

WITH t(col1,col2) AS
(
 SELECT '["Marc", "Teddy", "Katie"]', 
        '{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}], "females":[{"name":"Katie","age":"28"}]}'
)
SELECT JSON_EXTRACT(col2,'$.males[*].name') AS males,
       JSON_EXTRACT(col2,'$.females[*].name') AS females
  FROM t
 WHERE JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.males[*].name'))
    OR JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.females[*].name'))

Demo

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