使用许多“喜欢”运算符进行MySQL搜索:有更好的方法吗?

时间:2012-03-18 17:58:18

标签: mysql search html-table sql-like

我有一个页面可以从数据库中的表中获取所有行,然后在HTML表格中显示这些行。 这很好用,但现在我想实现一个'搜索'功能。有一个搜索框,搜索项由空格分隔。我将搜索三个字段来搜索搜索词,'make''model'和'type'。这三个字段是VARCHAR(30)。

目前,如果我想使用3个术语(比如'cool''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 个答案:

答案 0 :(得分:2)

你应该使用FULLTEXT。搜索它,它非常简单实用。

答案 1 :(得分:2)

使用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

答案 2 :(得分:0)

您可以使用JQuery表插件,例如data tables功能即时过滤,您可以使用它而不是冗长的sql命令。它是免费的。