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

时间:2010-09-08 18:25:18

标签: mysql regex

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

从cat中选择*名称REGEXP('(region_Long Island)+(。)*(sport_Outdoor Track)');

传入值“region_Long Island”和“sport_Outdoor Track”。我需要能够匹配这些类别,无论它们的顺序如何。在表格中,可以有这些类别的各种组合两类。我需要匹配具有这两个类别的任何记录,无论它们列出的顺序如何。

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

谢谢

2 个答案:

答案 0 :(得分:2)

如果您只能使用单个正则表达式并且无法更改SQL查询,那么要以任何顺序匹配AB,您需要一个与{{1}匹配的正则表达式}或AB

BA

重新评论:

  

如果有任何特定顺序的两个以上的情况怎么办?

如果您有模式'region_Long Island.*sport_Outdoor Track|sport_Outdoor Track.*region_Long Island' AB任何您需要以任何顺序查找所有三个模式,那么您需要一个与C匹配的正则表达式, ABCACBCABCBABAC。如果您有 n 模式,这很快就会开始显示您需要 n!排列。

这就是为什么单个正则表达式不适合这些情况的原因。你将不得不使用另一种方法。

  

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

抱歉,这不起作用。

答案 1 :(得分:0)

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