MySql搜索字符串,与regexp匹配至少2个子字符串

时间:2016-12-12 15:26:08

标签: mysql regex

我试图创建一个regexp表达式,以匹配我的数据库中的某些字符串。

我的初步解决方案是这样的:

SELECT * FROM myTable WHERE myColumn REGEXP 'a1|a2|a3'

但是使用此解决方案,它匹配包含至少一个大海捞针的每个字符串。我想要达到的目标是匹配每根针或至少2针。

示例:

通缉字符串:'我的小foo with bar'

  1. [' little',' foo'] =>匹配
  2. [' little',' foobar'] =>不匹配
  3. ['我的',' bar',' little'] =>匹配

1 个答案:

答案 0 :(得分:1)

这很丑陋,而且很慢,但这是一种方式:

    WHERE (myColumn LIKE '%a1%')
        + (myColumn LIKE '%a2%')
        + (myColumn LIKE '%a3%') >= 2;

请注意,布尔表达式(例如LIKE的结果)对于true为1,对于false为0

LIKEREGEXP快,LIKE足以满足我的建议,所以我切换到了它。

如果您需要匹配FULLTEXT可能是更好的方法。但是,执行我的>= 2技巧可能是不可能的。