我使用MySQL数据库搜索类别列表。我的疑问是:
从cat中选择*名称REGEXP('(region_Long Island)+(。)*(sport_Outdoor Track)');
传入值“region_Long Island”和“sport_Outdoor Track”。我需要能够匹配这些类别,无论它们的顺序如何。在表格中,可以有这些类别的各种组合两类。我需要匹配具有这两个类别的任何记录,无论它们列出的顺序如何。
我无法更改查询本身,只修改传递给REGEXP函数的内容。
谢谢
答案 0 :(得分:2)
如果您只能使用单个正则表达式并且无法更改SQL查询,那么要以任何顺序匹配A
和B
,您需要一个与{{1}匹配的正则表达式}或AB
:
BA
重新评论:
如果有任何特定顺序的两个以上的情况怎么办?
如果您有模式'region_Long Island.*sport_Outdoor Track|sport_Outdoor Track.*region_Long Island'
,A
和B
任何您需要以任何顺序查找所有三个模式,那么您需要一个与C
匹配的正则表达式, ABC
,ACB
,CAB
,CBA
或BAC
。如果您有 n 模式,这很快就会开始显示您需要 n!排列。
这就是为什么单个正则表达式不适合这些情况的原因。你将不得不使用另一种方法。
我无法更改查询本身,只修改传递给REGEXP函数的内容。
抱歉,这不起作用。
答案 1 :(得分:0)
SELECT *
FROM cat
WHERE name RLIKE 'region_Long Island'
AND name RLIKE 'sport_Outdoor Track'