我试图创建一个regexp表达式,以匹配我的数据库中的某些字符串。
我的初步解决方案是这样的:
SELECT * FROM myTable WHERE myColumn REGEXP 'a1|a2|a3'
但是使用此解决方案,它匹配包含至少一个大海捞针的每个字符串。我想要达到的目标是匹配每根针或至少2针。
示例:
通缉字符串:'我的小foo with bar'
答案 0 :(得分:1)
这很丑陋,而且很慢,但这是一种方式:
WHERE (myColumn LIKE '%a1%')
+ (myColumn LIKE '%a2%')
+ (myColumn LIKE '%a3%') >= 2;
请注意,布尔表达式(例如LIKE
的结果)对于true为1
,对于false为0
。
LIKE
比REGEXP
快,LIKE
足以满足我的建议,所以我切换到了它。
如果您需要匹配字,FULLTEXT
可能是更好的方法。但是,执行我的>= 2
技巧可能是不可能的。