Поиск одного слова в json строке, где строка состоит из нескольких слов

В базе данных есть столбец с json строками, например: ["pervaya stroka","vtoraya stroka","tretya stroka"], я хочу сделать поиск по одному слову в строке, например ищу слово: 'vtoraya', соответственно должна находится строка: "vtoraya stroka". В ларавел я ищу так : whereJsonContains('tags',$search_tag), но в этом случае нужно писать строку полностью: "vtoraya stroka", иначе поиск не дает результата.


Ответы (2 шт):

Автор решения: Tigran Grigoryan

Чтобы решить эту проблему, можете воспользоваться этим SQL-запросом. Запрос будет искать указанную подстроку, в данном случае vtoraya:

SELECT * FROM table
WHERE column_name LIKE '%"vtoraya"%';
→ Ссылка
Автор решения: Semyon Bayandin

Во-первых, если нет какой-то необходимости, не стоит хранить JSON в БД. Самим потом тяжело будет с этим работать.

Во-вторых, коли вы уже так сделали, самый экологичный способ решения вашей проблемы только один - перебирать все записи таблицы, парсить JSON и искать нужное слово. Единственное, что может уменьшить нагрузку на сервер, это в условии выборки запроса проверять, что значение IS NOT NULL и CHAR_LINK(значение) > длина_значения

→ Ссылка