Поиск в MySQL с использованием множества «похожих» операторов: есть ли лучший способ? - PullRequest
2 голосов
/ 18 марта 2012

У меня есть страница, которая получает все строки из таблицы в базе данных, а затем отображает строки в таблице HTML. Это прекрасно работает, но теперь я хочу реализовать функцию поиска. Есть окно поиска, и условия поиска разделяются пробелом. Я собираюсь заставить его искать три поля для поисковых терминов: «make», «model» и «type». Эти три поля - VARCHAR (30).

В настоящее время, если я хочу выполнить поиск по 3 терминам (например, «круто», «abc» и «123»), мой запрос будет выглядеть примерно так:

SELECT * FROM table WHERE make LIKE '%cool%' OR make LIKE '%abc%' OR make LIKE '%123%' OR model LIKE '%cool%' OR model LIKE '%abc%' OR model LIKE '%123%' OR type LIKE '%cool%' OR type LIKE '%abc%' OR type LIKE '%123%'

Это выглядит действительно плохо, и будет еще хуже, если будет больше поисковых запросов или больше полей для поиска. Мой вопрос к вам: есть ли лучший способ поиска? Если так, то что?

Ответы [ 3 ]

2 голосов
/ 18 марта 2012

Вы должны использовать FULLTEXT. Ищите по этому поводу, это очень просто и полезно.

2 голосов
/ 18 марта 2012

Используйте REGEXP вместо

SELECT * FROM table WHERE make REGEXP 'cool|abc|123' OR model REGEXP 'cool|abc|123' OR type REGEXP 'cool|abc|123';

Узнайте больше о REGEXP

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

http://www.go4expert.com/forums/showthread.php?t=2337

0 голосов
/ 18 марта 2012

Вы можете использовать плагин таблиц JQuery, например таблицы данных Функции фильтрации на лету, которые вы можете использовать вместо длинной команды sql.И это бесплатно.

...