我正在尝试使用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)
答案 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);