2014-09-18 3 views
0

Что было бы правильным оператором SQL, чтобы при поиске двух слов, например, например «текстовое поле» в текстовом поле, он вернет все результаты, имеющие «текст» и «поле» в он использует инструкцию LIKE? Я не могу найти правильные условия для поиска.MySQL LIKE для двух слов

EDIT: Если возможно, я хочу сделать его динамичным. Например, если пользователь ищет 5 слов, все 5 слов будут в инструкции Like. Я пытаюсь сделать заявление
SELECT * FROM table WHERE search (LIKE %searchterm1%) OR (LIKE %searchterm2%) OR (LIKE %searchterm3%) ....

+0

Обновлен мой ответ, чтобы отразить вашу дополнительную информацию. – worldofjr

ответ

0

Правильный синтаксис;

SELECT * FROM table WHERE (column1 LIKE '%text%' AND column1 LIKE '%field%') 

Чтобы разрешить пользователю вводить несколько слов, во-первых, обратите внимание на проблемы SQL injection, но при условии, что вы используете PHP вы можете взорвать входную строку и лопаются результирующий массив, как это;

$values = explode(" ", $input); // delimiter is a space 
$query = "SELECT * FROM table WHERE (column1 LIKE '%" . implode("%' AND column1 LIKE '%",$values) . "%')"; 

Надеюсь, что это поможет!

0

В словах неупорядоченным использовать стандартный logical conjunction (aka AND)

LIKE '%word1%' AND LIKE '%word2%' 

Если слова упорядочиваются использует неявные конъюнкции в перспективе поиска самого

LIKE '%word1%word2%' 

Измените как символы (и кавычку), как необходимости; также подумайте, может ли быть более целесообразным a full-text search.

Смежные вопросы