本文介绍了MySQL RegEx:从正则表达式中得到错误“空(子)表达式"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一列 participants,其中包含一个类似于 "99005|99001|99002|99001999|99004" 的值,它们是用户登录.

I have a column participants which contains a value like "99005|99001|99002|99001999|99004" which are user logins.

我真正想要的是匹配"99001"而不匹配"99001999".

What exactly I want is to match "99001" without matching "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[[:>:]]'

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

这篇关于MySQL RegEx:从正则表达式中得到错误“空(子)表达式"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 22:26