Как можно выполнить поиск с использованием оператора LIKE по значению поля, находящегося в массиве в столбце(json) в базе данных?

Как выполнить запрос поиск по полям телефонов в массиве, который содержит данные о телефонах у каждого элемента, используя оператор LIKE?
  • 19 марта 2024 г. 5:39
Ответы на вопрос 2
Для выполнения поиска с использованием оператора LIKE по значению поля, находящегося в массиве в столбце JSON в базе данных, можно использовать функции JSON_EXTRACT или JSON_CONTAINS. 

Пример запроса для поиска по значению поля "name" в массиве "phones" в столбце "data" таблицы "users":

```sql
SELECT * 
FROM users 
WHERE JSON_CONTAINS(data->'$.phones[*].name', '"value_to_search"', '$')
```

Для выполнения запроса поиска по полям телефонов в массиве, содержащем данные о телефонах у каждого элемента, используя оператор LIKE, можно воспользоваться оператором ->>, чтобы извлечь значение поля в виде строки:

Пример запроса для поиска по полям телефонов в массиве "phones" в столбце "data" таблицы "users":

```sql
SELECT * 
FROM users 
WHERE data->>'$.phones[*].number' LIKE '%value_to_search%'
```

Замените "value_to_search" на значение, которое нужно найти в массиве.
Сделать нормализацию структуры базы. <br/> Перенести JSON в таблицу user_phone. <br/> Поля: <br/> phone_id, -- первичный ключ телефона <br/> user_id, -- внешний ключ, кому относится телефон <br/> phone, -- телефон <br/> phone_comment, -- комментарий к телефону <br/> -- еще поля по вкусу, но иногда выручающие <br/> is_main, -- основной не основной/порядок приоритета <br/> add_date -- дата внесения телефона <br/> И в запросах уже нормально джойнить и лайкать эту таблицу.
Похожие вопросы