--基本上,我想在搜索.时将通配符添加到col值中
通常我是这样做的:
WHERE cakes.cake_name LIKE '%$cake_search%'然而,现在我想要它与相反的匹配:
用户搜索'
treacle sponge',我希望它匹配cake_name列= 'sponge‘的一行。
这个是可能的吗?
发布于 2010-07-15 12:03:48
为什么不用火柴?
MATCH(`cake_name`) AGAINST ('treacle sponge')发布于 2010-07-15 12:00:45
WHERE '$cake_search' LIKE concat('%',cakes.cake_name, '%')应该行得通。它将需要一个完整的表扫描,但反向查询也需要。你查过全文搜索 for MySQL吗?它可能会提高这种查询的效率。
发布于 2010-07-15 12:02:52
您必须拆分空间字符上的用户提供的输入,并动态构造查询以检查列中的这些值:
$input = "treacle sponge";
$input_words = explode(' ', $input);
$sql_where = "WHERE cakes.cake_name IN('" . implode("','", $input_words) . "')"; // generates: WHERE cakes.cake_name IN('treacle','sponge')https://stackoverflow.com/questions/3255298
复制相似问题