我正在处理搜索查询。 我的桌子上有一个字符串“thomas alva edison”。 我希望在用户搜索时显示此字符串,
托马斯阿尔瓦爱迪生,托马斯,阿尔瓦,爱迪生,托马斯阿尔瓦,托马斯爱迪生等
但不适用于
寿,儿子,ALV等
我做的是
select name from tbl_names where name like "."'%".$key."%'
如何修改此查询以获得正确的结果。
答案 0 :(得分:3)
我建议在查询中使用REGEX进行单词搜索,
查询应该是:
SELECT name FROM `tbl_names` WHERE `name` REGEXP '[[:<:]]thomas[[:>:]]'
希望这对你有用。有关详细信息,请查看此Check this answer。
答案 1 :(得分:3)
MySQL提供了一种实现一点点搜索的精彩方式(全文搜索)。 http://viralpatel.net/blogs/full-text-search-using-mysql-full-text-search-capabilities/
示例:
select name from tbl_names WHERE MATCH (name) AGAINST ('thomas');
我们在全文搜索中有很多选项,只有MySQL 5.6 MYISAM引擎。
答案 2 :(得分:0)
你也可以尝试这样的事情:
$sql = "select name from tbl_names where ";
$array = explode(" ",$key);
$or = "";
foreach($array as $word) {
if(strlen(trim($word))>0) {
$sql.= $or."(name like '%".$word."%')";
$or = " OR ";
}
}