2015-07-10 217 views
1

我有一列participants其中包含值为"99005|99001|99002|99001999|99004"这是用户登录。MySQL正则表达式:从正则表达式得到错误'空(子)表达式'

我究竟想要匹配"99001"而没有匹配"99001999"

这里是我的方法:

SELECT * FROM `bv_sklad_products` WHERE `stage`=4 AND `participants` REGEXP ('^([^\|]+(\|))*(99001|99005)((\|)[^\|]+)*$') AND `start_date` BETWEEN '2015-07-09' AND '2015-07-10' ORDER BY `id` DESC LIMIT 0,100 

和错误消息我得到:

Got error 'empty (sub)expression' from regexp 

我在做什么错?

+0

我想你可以用'[做到这一点:<:]](99001 | 99005)[[:>:]]'如果你需要找到两个'99001 '和'99005'。 –

回答

2

您可以使用单词边界。

regexp '[[:<:]]99001[[:>:]]' 

regexp '(^|[|])99001([|]|$)' 
+1

谢谢。它完美的工作!但是顶级人物是如何工作的? – BorissOliSiin

+0

[这里是你的问题的答案](http://stackoverflow.com/a/18902555/3832970)。 –