MySQL正则表达式:出现错误';空(子)表达式';来自regexp

MySQL正则表达式:出现错误';空(子)表达式';来自regexp,mysql,regex,Mysql,Regex,我有一个列参与者,其中包含一个值,如“99005 | 99001 | 99002 | 99001999 | 99004”,这是用户登录 我真正想要的是匹配“99001”,而不匹配“99001999” 以下是我的方法: SELECT * FROM `bv_sklad_products` WHERE `stage`=4 AND `participants` REGEXP ('^([^\|]+(\|))*(99001|99005)((\|)[^\|]+)*$') AND `start_date` BE

我有一个列
参与者
,其中包含一个值,如
“99005 | 99001 | 99002 | 99001999 | 99004”
,这是用户登录

我真正想要的是匹配
“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

我做错了什么?

你可以使用单词边界

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

如果你需要同时找到
99001
99005
,我想你可以用
[[::]]]
来完成。它不起作用的真正原因是因为你需要在管道前面加一个双反斜杠
\\\\
谢谢。它工作得很好!但是最上面的那个是怎么工作的呢?。
regexp '(^|[|])99001([|]|$)'