Php MySQL匹配所有出现的字符串
我在mysql查询中遇到匹配字符串的问题,我使用的是Laravel。我的问题就在这方面Php MySQL匹配所有出现的字符串,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我在mysql查询中遇到匹配字符串的问题,我使用的是Laravel。我的问题就在这方面 -> where ('service', 'like', '%'. $request->get('service') . '%') 我请求的服务是hair-cut-women,数据库中我的service是hair-women-Style&cut。由于某些原因,这两个字符串不匹配 所以 play game与play good two&game 上面的查询应该与此匹配一起使用吗?特殊字符和是否妨碍比
-> where ('service', 'like', '%'. $request->get('service') . '%')
我请求的服务是hair-cut-women
,数据库中我的service
是hair-women-Style&cut
。由于某些原因,这两个字符串不匹配
所以
play game
与play good two&game
上面的查询应该与此匹配一起使用吗?特殊字符
和是否妨碍比赛?我没有MySQL的经验,所以我正在寻求帮助 %string%
将字符串
前后的0个或多个字符进行匹配。
%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%'
%string%
将字符串
前后分别匹配0个或更多字符。
%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%'
对不起,这不是LIKE的工作方式<代码>类似于%two words%
意味着它必须包含准确的文本两个单词
,每边都有0个或更多任意字符。因此,例如,它将匹配这里的这两个词
,但不匹配另外两个词
。在两侧使用%
意味着精确,只是在右侧或左侧使用取决于您的目标,但您也需要遵循数据库中的单词顺序%hair cute women%“
不会匹配发型女性发型和发型
,因为单词顺序不正确,如果是发型女性发型和发型
,则会匹配。您可能想看看通配符%
的实际功能。如果您希望提供高级搜索,可以使用REGEXP'play | game'
read(),然后使用一种明智的方法,如在搜索服务(如SOLR或ElasticSearch)中为文档编制索引。抱歉,这不是like的工作方式<代码>类似于%two words%
意味着它必须包含准确的文本两个单词
,每边都有0个或更多任意字符。因此,例如,它将匹配这里的这两个词
,但不匹配另外两个词
。在两侧使用%
意味着精确,只是在右侧或左侧使用取决于您的目标,但您也需要遵循数据库中的单词顺序%hair cute women%“
不会匹配发型女性发型和发型
,因为单词顺序不正确,如果是发型女性发型和发型
,则会匹配。您可能想看看通配符%
的实际用途。如果您希望提供高级搜索,可以使用REGEXP'play | game'
read(),然后使用一种明智的方法,如在SOLR或ElasticSearch等搜索服务中为文档编制索引。我想这将是缓慢的,不可扩展的?我在某个地方读到,在like中使用两个通配符是不好的。生成的查询将类似于WHERE服务,如%hair%和服务,如%cut%
,这对我很有效,但我需要知道这是否是最好的实现。嗯。。。对于一个平均数据量(<1000000)的常规网站,我认为这是很好的。我想这将是缓慢的,不可扩展的?我在某个地方读到,在like中使用两个通配符是不好的。生成的查询将类似于WHERE服务,如%hair%和服务,如%cut%
,这对我很有效,但我需要知道这是否是最好的实现。嗯。。。对于一个平均数据量(<1000000)的常规网站,我认为这就足够了