我有一个页面可以从数据库中的表中获取所有行,然后在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%'
看起来真的不好,如果有更多搜索字词或更多字段需要搜索,情况会更糟。 我的问题是:有更好的搜索方式吗?如果是这样,是什么?
答案 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
答案 2 :(得分:0)
您可以使用JQuery表插件,例如data tables功能即时过滤,您可以使用它而不是冗长的sql命令。它是免费的。