Несколько совпадений LIKE или OR MySql - PullRequest
0 голосов
/ 16 ноября 2011

Поиск: 'химик'

Проблема: запрос, который будет соответствовать строке типа «onechemist», но не «chemist».

SELECT id,name FROM `records` 
WHERE name LIKE '%". mysql_real_escape_string($q) ."%' 

Эта альтернативная попытка не сработает:

SELECT id,name FROM `records` 
WHERE name LIKE '%". mysql_real_escape_string($q) ."%'  
OR name LIKE '". mysql_real_escape_string($q) ."%' 
OR name LIKE '%". mysql_real_escape_string($q) ."'

Как я могу скомпилировать вышеупомянутое в один запрос, который будет соответствовать любому полю со строкой или оптимизировать запрос в лучшее выражение?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Если $q содержит «химик», он будет соответствовать name, который также «химик».В этом случае ваш первый запрос должен работать.Попробуйте дважды проверить ваши значения.

$sql = "SELECT `id`, `name` FROM `records` 
WHERE `name` LIKE '%".mysql_real_escape_string($q)."%'";

PS - Ваш второй запрос будет получать те же результаты, что и ваш первый.

0 голосов
/ 30 января 2012

Вы можете использовать регулярное выражение для этого. например,

SELECT id,name FROM `records` where name REGEXP '^onechemist'  

Соответствует именам, начинающимся с onechemist

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...