Поиск одного слова в json строке, где строка состоит из нескольких слов
В базе данных есть столбец с json строками, например: ["pervaya stroka","vtoraya stroka","tretya stroka"], я хочу сделать поиск по одному слову в строке, например ищу слово: 'vtoraya', соответственно должна находится строка: "vtoraya stroka". В ларавел я ищу так : whereJsonContains('tags',$search_tag), но в этом случае нужно писать строку полностью: "vtoraya stroka", иначе поиск не дает результата.
Ответы (2 шт):
Чтобы решить эту проблему, можете воспользоваться этим SQL-запросом. Запрос будет искать указанную подстроку, в данном случае vtoraya:
SELECT * FROM table
WHERE column_name LIKE '%"vtoraya"%';
Во-первых, если нет какой-то необходимости, не стоит хранить JSON в БД. Самим потом тяжело будет с этим работать.
Во-вторых, коли вы уже так сделали, самый экологичный способ решения вашей проблемы только один - перебирать все записи таблицы, парсить JSON и искать нужное слово. Единственное, что может уменьшить нагрузку на сервер, это в условии выборки запроса проверять, что значение IS NOT NULL и CHAR_LINK(значение) > длина_значения