@Lulzsec

Как правильно сформировать SQL запрос?

Есть массив слов: (Привет, привет, Хай, хай, Хэй, Хэллоу).
Есть способ как одним запросом вывести все записи, в которых есть эти слова или нужно делать отдельные запросы для каждого слова? Как-то с помощью оператора IN можно это сделать?

Колонки у таблицы пусть будут: id, text
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 4
mahoho
@mahoho
Full stack certified PHP developer.
FIND_IN_SET()
Это уже как минимум третий раз я отвечаю на аналогичный вопрос, когда люди не могут эту функицию нагуглить.
Ответ написан
@IceJOKER
Web/Android developer
Сначала смотрите в сторону fulltext search(в поиске полно информации).
Если не подойдет, можно как-то так -
$words = array('Привет', 'привет', 'Хай', 'хай', 'Хэй', 'Хэллоу');
$impl = implode('%', $words);
$where = "TEXT LIKE '%{$impl}%'";

Или таким же макаром с помощью OR, т.е. разделяем массив на отдельные слова и ищем через ИЛИ
Ответ написан
Комментировать
profit
@profit
Разработка | Оптимизация. Telegram: @evzavyalov
например так
select *
  from <table>
 where upper(text) like upper('%Привет%' )
       or upper(text) like upper('%Хай%' )
       or upper(text) like upper('%Хэй%' )
       or upper(text) like upper('%Хэллоу%' )

но это только например. смотрите план, индексы и ...
Ответ написан
Комментировать
igruschkafox
@igruschkafox
Специалист по сопровождению БД MS SQL
Есть массив слов(с)

тогда все просто
сохраните этот массив во временную таблицу
и сделайте джойн своей таблицы с таблицей массива

ПС если массив большой - не забудьте для него на временной таблице сделать индекс
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы