在MySQL中匹配Regex,在一列中重复单词

时间:2014-07-03 05:32:13

标签: mysql sql regex

我遇到了查询问题。我使用mysql作为DB。 我想使用REGEX来匹配我期望的结果 和表是

table A

----------------------------------
|   ID  | Description            |
----------------------------------
|   1   |  new 2 new 2 new 2 new |
|   2   |   new 2 new 2 new      |
|   3   |   new 2                |
|   4   |   2 new 2new           |

我期待的结果

---------------------------------
|   ID  | Description           |
---------------------------------
|   2   |   new 2 new 2 new     |
|   4   |   2 new 2new          |

到目前为止我尝试过的查询:

SELECT * FROM a WHERE (description REGEXP '([^2][^0..9]])2( [^2][^0..9])([^2][^0..9]])2( [^2][^0..9])')

http://sqlfiddle.com/#!2/7d712/2

任何人都可以帮我解决这个问题:(?

2 个答案:

答案 0 :(得分:1)

你的正则表达式没有做你认为它做的事情(尽管我不能猜测你认为它做什么)。

部分正则表达式的翻译:

([^2][^0..9]])2

表示:

(         # Start a group
 [^2]     # Match one character except "2"
 [^0..9]  # Match one character except "0", "." or "9"
 ]        # Match "]"
)         # End of group
2         # Match "2"

答案 1 :(得分:0)

正如@Tim Pietzcker指出的那样,你的正则表达并没有你所想的那样做。如果我理解正确,我相信你正在寻找以下正则表达式。这将分别返回ID 24

^[^2]*2[^2]*2[^2]*$

您的SQL查询将是:

SELECT * FROM a WHERE (description REGEXP '^[^2]*2[^2]*2[^2]*$')

SQL Fiddle