mysql SELECT LIKE должен соответствовать целым словам только для переменной

У меня есть строковая переменная $, и я использую

SELECT * FROM db WHERE description LIKE '%$string%' OR headline LIKE '%$string%' 

Как видно, я хочу найти два поля «description» и «headline», чтобы увидеть, соответствует ли строковая переменная любой из них.

Проблема в том, что я хочу, чтобы она соответствовала целым словам !!!

Пример: если описание содержит «привет», достаточно, если $ string – это «h». это не то, что я хочу. Он должен соответствовать всему слову!

Я разделил запрос на слова для этого? или что?

Если вам требуется полное совпадение слов, вам следует попробовать попробовать FULLTEXT. Одно из предпосылок заключается в том, что в вашей таблице должен использоваться движок MyISAM:

 CREATE TABLE test ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, headline VARCHAR(120) NOT NULL, description VARCHAR(255) NOT NULL, FULLTEXT(headline, description) ) ENGINE=MyISAM; 

Вы запросили бы совпадения так:

 SELECT * FROM test WHERE MATCH (headline,description) AGAINST('$string'); 

Это имеет дополнительное преимущество при заказе ваших результатов по релевантности.

Альтернативой полному поиску текста, который может быть достаточно, является использование функции REGEXP.

Тогда ваш запрос может быть следующим:

 SELECT * FROM db WHERE description REGEXP '[[:<:]]$string[[:>:]]' = 1 OR headline REGEXP '[[:<:]]$string[[:>:]]' = 1 

См. http://dev.mysql.com/doc/refman/5.1/ru/regexp.html.