我遇到了在mysql查询中匹配字符串的问题,我正在使用Laravel。我的问题在于这一行
-> where ('service', 'like', '%'. $request->get('service') . '%')
我要求的服务是hair cut women
,我在数据库中的service
是Hair Women Style & Cut
。由于某种原因,这两个字符串不匹配。
所以,
play game
无法与play good two & game
以上查询是否适用于此匹配?特殊字符&
会妨碍比赛吗?我对MySQL没有经验,所以我正在寻求帮助。
答案 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%'