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