MySQL匹配所有出现的字符串

时间:2017-12-06 16:58:58

标签: php mysql sql laravel

我遇到了在mysql查询中匹配字符串的问题,我正在使用Laravel。我的问题在于这一行

-> where ('service', 'like', '%'. $request->get('service') . '%')

我要求的服务是hair cut women,我在数据库中的serviceHair Women Style & Cut。由于某种原因,这两个字符串不匹配。

所以,

play game无法与play good two & game

匹配

以上查询是否适用于此匹配?特殊字符&会妨碍比赛吗?我对MySQL没有经验,所以我正在寻求帮助。

1 个答案:

答案 0 :(得分:2)

%string%string与之前和之后的0个或多个字符匹配 %hair cut%将与cool hair cut匹配,但不会与hair for cut匹配,因为

中混合了不匹配的字词

如果您希望匹配单词,则必须拆分搜索词并创建多个where子句。

$terms = explode(" ", $request->get('service'));
for ($terms as $term)
    $query->where('service', 'like', '%'. $term . '%')

生成的查询类似于

WHERE service LIKE '%hair%' AND service LIKE '%cut%'