繁体   English   中英

Mysql搜索字符串,至少匹配2个带有正则表达式的子字符串

[英]MySql search string that matches at least 2 substrings with regexp

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

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

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

但是通过这种解决方案,它可以匹配至少包含大海捞针的所有字符串。 我要达到的目标是匹配每根针或至少两根针。

例子:

想要的字符串:“我的带栏的小foo”

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

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

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

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

LIKEREGEXP快, LIKE足以满足我的建议,因此我改用了它。

如果您需要匹配单词 ,则FULLTEXT可能是更好的选择。 但是,可能无法执行我的>= 2技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM