mysql中的regexp - 找到一个包含所有关键字的字符串(AND运算符)

时间:2012-05-02 13:19:21

标签: mysql regex syntax keyword

我被困3个小时,我想简单的事情,但一直在搜索互联网,并没有找到答案。 我有1,2,3,4或更多关键字和一个字符串来搜索其中的关键字。我正在寻找匹配所有关键字的regexp表达式。例如:

string =“这辆车是红色的,有很大的轮子”

关键字:车轮

return:true

关键字:车轮

return:true

关键字:汽车为红色

return:true

关键字:这很大

return:true

关键字:汽车是红色的

return:false(字符串中没有'小'字样)

我使用了这样一个mysql查询:

SELECT name, desc FROM table WHERE CONCAT(name, desc) REGEXP ($keyword1)($keyword2)

但它返回空字符串。什么应该是正确的regexp语法?

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是将AND移出regexp并进入SQL:

SELECT name, desc
FROM table
WHERE CONCAT(name, desc) REGEXP ($keyword1)
  AND CONCAT(name, desc) REGEXP ($keyword2)

否则,您的正则表达式必须包含N!个长OR个语句中的所有{{1}}个可能的订单,并且该长度变得非常非常快(有5个关键字,您需要构建120个不同的排序!)