Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL匹配所有出现的字符串_Php_Mysql_Sql_Laravel - Fatal编程技术网

Php MySQL匹配所有出现的字符串

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 上面的查询应该与此匹配一起使用吗?特殊字符和是否妨碍比

我在mysql查询中遇到匹配字符串的问题,我使用的是Laravel。我的问题就在这方面

-> 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)的常规网站,我认为这就足够了