Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
MySQL Reg ex,需要以任意顺序匹配短语_Mysql_Regex - Fatal编程技术网

MySQL Reg ex,需要以任意顺序匹配短语

MySQL Reg ex,需要以任意顺序匹配短语,mysql,regex,Mysql,Regex,我正在使用MySQL数据库搜索类别列表。我的问题是: 从名称为REGEXP的cat中选择*('(长岛地区)+(.*(户外运动轨道)) 其中传递了“长岛地区”和“户外运动场”的值。我需要能够匹配这些类别,无论它们的顺序如何。在表中,这两个类别可能有不同的组合。我需要匹配具有这两个类别的任何记录,无论它们以什么顺序列出 我无法更改查询本身,只能修改传递给th REGEXP函数的内容 谢谢如果您只能使用一个regexp,并且无法更改SQL查询,那么要以任意顺序匹配a和B,您需要一个匹配AB或BA的re

我正在使用MySQL数据库搜索类别列表。我的问题是:

从名称为REGEXP的cat中选择*('(长岛地区)+(.*(户外运动轨道))

其中传递了“长岛地区”和“户外运动场”的值。我需要能够匹配这些类别,无论它们的顺序如何。在表中,这两个类别可能有不同的组合。我需要匹配具有这两个类别的任何记录,无论它们以什么顺序列出

我无法更改查询本身,只能修改传递给th REGEXP函数的内容


谢谢

如果您只能使用一个regexp,并且无法更改SQL查询,那么要以任意顺序匹配
a
B
,您需要一个匹配
AB
BA
的regexp:

SELECT  *
FROM    cat
WHERE   name RLIKE 'region_Long Island'
        AND name RLIKE 'sport_Outdoor Track'
'region_Long Island.*sport_Outdoor Track|sport_Outdoor Track.*region_Long Island'

请回复您的评论:


如果有两个以上,以任何特定顺序排列,情况会如何

如果您有模式
A
B
C
需要以任意顺序查找这三种模式,则需要一个与
ABC
ACB
CAB
CBA
BAC
BCA
匹配的regexp。这很快开始看起来你需要n!如果有n个模式,则为排列

这就是为什么对于这些情况,单个正则表达式不是一个好的解决方案。你将不得不使用另一种方法

我无法更改查询本身,只能修改传入REGEXP函数的内容


很抱歉,这不起作用。

我应该提到,我无法更改REGEXP函数的使用,我只能传入值。如果有两个以上的值,按任何特定顺序,情况会怎样?例如:region_Long Island school_someSchool sport_Outdoor Track如果我使用regex“region_Long Island.*sport_Outdoor Track.*region_Long Island”,那么我将排除任何未列为sport_Outdoor Track region_Long Island或region_Long Island sport_Outdoor Track的结果,对吗?