REGEX和运营商。+

时间:2012-11-07 17:33:14

标签: regex mysql-5.0

我正在尝试使用MySql REGEXP查找列中出现green 2012的行

我在正则表达式中使用.+

这有效:

select  'green 2012-01' REGEXP 'green.+2012'

返回1

但如果我首先放置'2012',则返回0

select  'green 2012-01' REGEXP '2012.+green';

返回0

我使用的是MYSQL软件版本:5.1.43 - MySQL社区服务器(GPL)

2 个答案:

答案 0 :(得分:2)

正则表达式依赖于顺序。你需要做的是放一个| (或)两个项目之间的操作符,以使其查找任何一个。

select 'green 2012-01' REGEXP '(green.*2012)|(2012.*green)'

答案 1 :(得分:0)

作为REGEX的替代方案,虽然可能效率较低,但您只需使用LOCATE两次。

SELECT * FROM table WHERE LOCATE('2012', column) AND LOCATE('green', column);