2

我正在尝试使用 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 Community Server (GPL)

4

2 回答 2

2

正则表达式有点依赖于顺序。你需要做的是把 | (或)您的两个项目之间的运算符,以使其查找其中一个。

select 'green 2012-01' REGEXP '(green.*2012)|(2012.*green)'
于 2012-11-07T17:55:10.423 回答
0

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

SELECT * FROM table WHERE LOCATE('2012', column) AND LOCATE('green', column);
于 2012-11-07T17:38:37.227 回答