2013-12-12 5 views
4

Я пытаюсь выбрать запись, используя функцию LIKE. Однако он не показывает результаты, если между ними есть символы. Я хочу, чтобы он выбирал данные, содержащие эти строки. Например:MySQL Выбор разделяемых данных строк

$value = "Mark Anthony"; 
$qry ="SELECT * FROM students WHERE name LIKE '%$value%'"; 

возвращает эти результаты:

John Mark Anthony 
Mark Anthony Philipps 

, но я также хочу иметь такие результаты

Mark James Anthony 
Mark Gabriel Anthony Fernandez 
Marko Julian Anthonyo 

Любые идеи? ОБНОВЛЕНИЕ: «Отметка» должна быть до «Энтони»

ответ

1

последняя попытка:

$value = "Mark Anthony"; 
$value = str_replace(" ","%",$value); 
$qry ="SELECT * FROM students WHERE name LIKE '%$value%'"; 

не тестировался!

+0

Обновлен мой вопрос. Как вы думаете, это также будет включать в себя такие результаты? Марко Джулиан Антонио? – Elmer

+0

jepp - теперь он должен работать – niyou

+0

Просто протестировал его. Ничего не найдено. xD – Elmer

0

Проплем, вы говорите «принесите все результаты, которые содержат Марк Энтони», так оно и есть. Вы должны установить его как

$value = "Mark%Anthony"; 
+0

Hm. Так будет работать: $ value = "% Mark% Anthony%" ;? – Elmer

6

Я думаю, что полный текст работы

Но полнотекстового поиска поддерживаются MyISAM таблиц только

SELECT * FROM students 
    WHERE MATCH (name) 
    AGAINST ('Mark Anthony' IN BOOLEAN MODE) 

UPDATE: - В соответствии с вопросительным обновление OP потребности для поиска Marko, то вы можете получить следующее: -

SELECT * FROM students 
WHERE 
(
    name LIKE '%Mark%' 
    OR name LIKE '%Anthony%' 
) 
+0

Все в порядке, я все равно использую PHPmyadmin. Попробуй это. – Elmer

+0

Да, попробуйте, я думаю, в вашем случае FULL TEXT лучше – Roopendra

+0

Обновлен мой вопрос. Появятся ли подобные результаты? Marko Julian Anthonyo – Elmer

2

Вы можете разбить строку значений на две части. Как так:

WHERE name LIKE '%Mark%' AND name LIKE '%Anthony%' 
+0

Привет, я не обновил вопрос, но Марк должен быть перед Энтони. С твоим предложением я думаю, что он будет включать результаты с Энтони перед Марком. :) – Elmer

+0

Да, это возможность по моему запросу. '% Mark% Anthony%' должен сделать трюк tho .. @Elmer – Jakob

+0

Обновлен мой вопрос. Появятся ли подобные результаты? Marko Julian Anthonyo – Elmer

1

Попробуйте это решение -

SELECT * FROM table WHERE column REGEXP '(Mark).+(Anthony)'; 
+0

Не пробовал это еще, но задавался вопросом, было ли решение, которое не было бы исправлено только для Марка Энтони. Например, если я просто хочу искать ' Отметка'. – Elmer

+0

Почему вы не пробовали это?Иногда может помочь функция Regex. – Devart

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